Êý¾Ý½á¹¹(Java°æ)-ϰÌâ½â´ðÓëʵÑéÖ¸µ¼ ÏÂÔØ±¾ÎÄ

ÈëÕ»£¬Í·²åÈ룬list.insert(0,x); O(1)list.heada0?an-1¡Älist.heada0ÈëÕ»£¬Î²²åÈ룬list.insert(x); O(n)?an-1¡Ä

³öÕ»£¬Í·É¾³ý£¬list.remove(0); O(1)£¨a£© Í·²åÈëºÍͷɾ³ý³öÕ»£¬Î²É¾³ý£¬list.remove(list.size()-1); Á½´Î±éÀú£¬O(n)£¨b£© β²åÈëºÍβɾ³ýͼ4.2 ʹÓõ¥Á´±í¶ÔÏó×÷Ϊջ³ÉÔ±±äÁ¿µÄ²Ù×÷ЧÂÊ·ÖÎö

¢Û ʹÓÃÒ»¸öÑ­»·µ¥Á´±í¡¢Ë«Á´±í»òÑ­»··ÖÎöʡ˫Á´±í¶ÔÏó×÷ΪջµÄ³ÉÔ±±äÁ¿£¬ÈëÕ»ºÍ³öÕ»²Ù×÷ЧÂÊÊ¡ÂÔ¡£

£¨4£© Õ»µÄÓ¦ÓÃ

4-5 д³öÖÐ׺±í´ïʽA+B*(C-D*(E+F)/G+H)-(I+J)*K¶ÔÓ¦µÄºó׺±í´ïʽ¡£

¡¾´ð¡¿ABCDEF+*G/-H+*+IJ+K*-

4.2 ¶ÓÁÐ

1. ¶ÓÁÐ £¨1£© ¶ÓÁж¨Òå

4-6 ʲôÊǶÓÁУ¿ÓкÎÌØµã£¿ËµÃ÷ÔÚʲôÇé¿öÏÂÐèҪʹÓöÓÁС£

¡¾´ð¡¿¶ÓÁÐÊÇÒ»ÖÖÌØÊâµÄÏßÐÔ±í£¬Æä²åÈëºÍɾ³ý²Ù×÷·Ö±ðÔÚÏßÐÔ±íµÄÁ½¶Ë½øÐС£¶ÓÁеÄÌØµãÊÇ¡°ÏȽøÏȳö¡±¡£¹ã¶ÈÓÅÏÈËÑË÷±éÀúËã·¨ÐèҪʹÓöÓÁÐ×÷Ϊ¸¨Öú½á¹¹¡£

4-7 ÒÑÖªÈë¶ÓÐòÁÐΪ{A,B,C,D}£¬Óм¸ÖÖ³ö¶ÓÐòÁУ¿ ¡¾´ð¡¿Ò»ÖÖ{A,B,C,D}¡£ £¨2£© ¶ÓÁеÄʵÏÖ·½°¸ÌÖÂÛ

4-8 ÄÜ·ñʹÓÃÒ»¸öÏßÐÔ±í×÷Ϊ¶ÓÁУ¬»ò½«¶ÓÁÐÉùÃ÷Ϊ¼Ì³ÐÏßÐÔ±í£¿ÎªÊ²Ã´£¿

¡¾´ð¡¿¶¼²»ÄÜ¡£ÒòΪ¶ÓÁкÍÏßÐÔ±íÊDz»Í¬µÄ³éÏóÊý¾ÝÀàÐÍ£¬¶ÓÁв»Ö§³ÖÖмä²åÈëºÍɾ³ý²Ù×÷¡£

¢Ù Èç¹ûʹÓÃÒ»¸öÏßÐÔ±í¶ÔÏó×÷Ϊ¶ÓÁУ¬ÓÐÂß¼­´í¡£ÀýÈ磺

SeqList queue = new SeqList(); //ÉùÃ÷Ò»¸öÏßÐÔ±í¶ÔÏó×÷Ϊ¶ÓÁÐ

queue.insert(i,x); //Óï·¨ÕýÈ·£¬Âß¼­´í£¬ÒòÏßÐÔ±íÖ§³ÖÖмä²åÈë²Ù×÷£¬µ«¶ÓÁв»Ö§³Ö

¢Ú Èç¹ûÉùÃ÷¶ÓÁÐΪ¼Ì³ÐÏßÐÔ±íÈçÏ£¬Ôò¶ÓÁÐÀà¼Ì³ÐÁË˳Ðò±íÀàµÄ

- 38 -

isEmpty()¡¢insert(i,x)¡¢remove(i)µÈ³ÉÔ±·½·¨£¬¶ø¶ÓÁв»Ö§³ÖÖмä²åÈëºÍɾ³ý²Ù×÷¡£

public class SeqQueue extends SeqList //˳Ðò¶ÓÁÐÀ࣬¼Ì³Ð˳Ðò±íÀà

public class LinkedQueue extends SinglyList //Á´Ê½¶ÓÁÐÀ࣬¼Ì³Ðµ¥Á´±íÀà

4-9 ʹÓÃÒ»¸ö˳Ðò±í¶ÔÏó×÷Ϊ˳Ðò¶ÓÁеijÉÔ±±äÁ¿£¬·ÖÎöÈë¶Ó¡¢³ö¶Ó²Ù×÷µÄʱ¼äЧÂÊ¡£

¡¾´ð¡¿¼û½Ì²ÄµÚ98ҳͼ4.11¡£

4-10 ʲôÊǶÓÁеļÙÒç³ö£¿ÎªÊ²Ã´Ë³Ðò¶ÓÁлá³öÏÖ¼ÙÒç³ö£¿ÔõÑù½â¾ö¶ÓÁеļÙÒç³öÎÊÌ⣿˳ÐòÕ»»á³öÏÖ¼ÙÒç³öÂð£¿Á´Ê½¶ÓÁлá³öÏÖ¼ÙÒç³öÂð£¿ÎªÊ²Ã´£¿

¡¾´ð¡¿¢Ù ˳Ðò¶ÓÁУ¬µ±Èë¶ÓµÄÔªËØ¸öÊý£¨°üÀ¨Òѳö¶ÓÔªËØ£©³¬¹ýÊý×éÈÝÁ¿Ê±£¬¶ÓÁÐβϱêÔ½½ç£¬Êý¾ÝÒç³ö¡£´Ëʱ£¬ÓÉÓÚ֮ǰÒÑÓÐÈô¸ÉÔªËØ³ö¶Ó£¬Êý×éǰ²¿ÒѿճöÐí¶à´æ´¢µ¥Ôª£¬ËùÒÔ£¬ÕâÖÖÒç³ö²¢²»ÊÇÒò´æ´¢¿Õ¼ä²»¹»¶ø²úÉúµÄ£¬³ÆÖ®Îª¼ÙÒç³ö¡£Ë³Ðò¶ÓÁÐÖ®ËùÒÔ»á²úÉú¼ÙÒç³öÏÖÏó£¬ÊÇÒòΪ˳Ðò¶ÓÁеĴ洢µ¥ÔªÃ»ÓÐÖØ¸´Ê¹ÓûúÖÆ¡£½â¾öµÄ°ì·¨Êǽ«Ë³Ðò¶ÓÁÐÉè¼Æ³ÉÑ­»·½á¹¹¡£

¢Ú ˳ÐòÕ»²»»á³öÏÖ¼ÙÒç³ö¡£ÒòΪ˳ÐòÕ»µÄ´æ´¢µ¥Ôª¿ÉÒÔÖØ¸´Ê¹Óã¬Èç¹ûÊý×éÈÝÁ¿²»¹»£¬ÔòÊÇÊý¾ÝÒç³ö£¬¶ø²»ÊǼÙÒç³ö¡£

¢Û Á´Ê½¶ÓÁв»»á³öÏÖ¼ÙÒç³ö¡£ÒòΪÿ´ÎÔªËØÈë¶Ó£¬¶¼ÒªÉêÇëнáµã£¬Êý¾Ý²»»áÒç³ö¡£

4-11 ʹÓÃÒ»¸öÁ´Ê½´æ´¢µÄÏßÐÔ±í¶ÔÏó×÷ΪÁ´Ê½¶ÓÁеijÉÔ±±äÁ¿£¬·ÖÎöÈë¶Ó¡¢³ö¶Ó²Ù×÷µÄʱ¼äЧÂÊ¡£

¡¾´ð¡¿¼û½Ì²ÄµÚ100ҳͼ4.14¡£

2. ÓÅÏȶÓÁÐ

ϰ4-13 ÒÑÖªÒ»¸ö¶ÔÏóÓÉ¡°(¹Ø¼ü×Ö,ÓÅÏȼ¶)¡±±íʾ£¬¶ÔÏóÐòÁÐÈçÏ£¬»­³ö½«ÕâЩ¶ÔÏóÒÀ´ÎÈ«²¿½ø¶ÓµÄ½á¹ûͼ£¬·Ö±ðʹÓÃÒ»¸ö˳Ðò±í¡¢ÅÅÐò˳Ðò±í¡¢µ¥Á´±í¡¢ÅÅÐòµ¥Á´±í¡¢Ñ­»·Ë«Á´±í¡¢ÅÅÐòÑ­»·Ë«Á´±í×÷ΪÓÅÏȶÓÁеijÉÔ±±äÁ¿£¬ÌÖÂÛÓÅÏȶÓÁеÄÈë¶ÓºÍ³ö¶Ó²Ù×÷µÄЧÂÊ¡£

{(E,4),(D,3),(A,1),(F,3),(B,2),(C,1)}

¡¾´ð¡¿Èçͼ4.1Ëùʾ£¬ÉèÓÅÏȶÓÁ㤶ÈΪn¡£

(a) ʹÓÃ˳Ðò±í×÷Ϊ³ÉÔ±±äÁ¿£¬Èë¶Ó²Ù×÷Ö´ÐÐ˳Ðò±íβ²åÈ룬ʱ¼ä

- 39 -

¸´ÔÓ¶ÈÊÇO(1)£»³ö¶Ó²Ù×÷Ö´ÐÐÖмäɾ³ý£¬Ë³Ðò²éÕÒÊ׸öÓÅÏȼ¶×î¸ßÔªËØ²¢½«Æäɾ³ý£¬Çó×î´óÖµËã·¨ÐèÒª±éÀú˳Ðò±í£¬Ê±¼ä¸´ÔÓ¶ÈÊÇO(n)£¬Æ½¾ùÒÆ¶¯n/2¸öÔªËØ¡£

(b) ʹÓÃÅÅÐò˳Ðò±í×÷Ϊ³ÉÔ±±äÁ¿£¬ÔªËذ´ÓÅÏȼ¶ÉýÐòÅÅÐò£¬¶ÓÍ·ÔªËØÓÅÏȼ¶×î¸ß£¬Èë¶Ó²Ù×÷Ö´ÐÐ˳Ðò±íÖмä²åÈ룬˳Ðò²éÕÒ¸ù¾ÝÓÅÏȼ¶È·¶¨ÔªËصIJåÈëλÖã¬Òƶ¯Èô¸ÉÔªËØ£¬Ê±¼ä¸´ÔÓ¶ÈÊÇO(n)£»³ö¶Ó²Ù×÷Ö´ÐÐ˳Ðò±íͷɾ³ý£¬Ê±¼ä¸´ÔÓ¶ÈÊÇO(n)¡£

(c) ʹÓõ¥Á´±í×÷Ϊ³ÉÔ±±äÁ¿£¬Èë¶Ó²Ù×÷Ö´Ðе¥Á´±íβ²åÈ룬ʱ¼ä¸´ÔÓ¶ÈÊÇO(n)£»³ö¶Ó²Ù×÷Ö´ÐÐÖмäɾ³ý£¬Ë³Ðò²éÕÒÓÅÏȼ¶×î¸ßµÄÔªËØ²¢½«Æäɾ³ý£¬Ê±¼ä¸´ÔÓ¶ÈÊÇO(n)¡£

(d) ʹÓÃÅÅÐòµ¥Á´±í×÷Ϊ³ÉÔ±±äÁ¿£¬ÔªËذ´ÓÅÏȼ¶ÉýÐòÅÅÐò£¬¶ÓÍ·ÔªËØÓÅÏȼ¶×î¸ß£¬Èë¶Ó²Ù×÷Ö´Ðе¥Á´±íÖмä²åÈ룬˳Ðò²éÕÒ¸ù¾ÝÓÅÏȼ¶È·¶¨ÔªËصIJåÈëλÖã¬Ê±¼ä¸´ÔÓ¶ÈÊÇO(n)£»³ö¶Ó²Ù×÷Ö´Ðе¥Á´±íͷɾ³ý£¬Ê±¼ä¸´ÔÓ¶ÈÊÇO(1)¡£

(e) ʹÓÃÑ­»·Ë«Á´±í×÷Ϊ³ÉÔ±±äÁ¿£¬Èë¶Ó²Ù×÷Ö´ÐÐÑ­»·Ë«Á´±íβ²å

È룬ʱ¼ä¸´ÔÓ¶ÈΪO(1)£»³ö¶Ó²Ù×÷Ö´ÐÐÖмäɾ³ý£¬Ê±¼ä¸´ÔÓ¶ÈÊÇO(n)¡£

(f) ʹÓÃÅÅÐòÑ­»·Ë«Á´±í×÷Ϊ³ÉÔ±±äÁ¿£¬Èë¶Ó²Ù×÷Ö´ÐÐÖмä²åÈ룬ʱ¼ä¸´ÔÓ¶ÈÊÇO(n)£»³ö¶Ó²Ù×÷Ö´ÐÐÑ­»·Ë«Á´±íͷɾ³ý£¬Ê±¼ä¸´ÔÓ¶ÈÊÇO(1)¡£

- 40 -

ÐòºÅ01?n-1?length-1˳Ðò±ílist(E,4)(D,3)(A,1)(F,3)(B,2)(C,1)Èë¶Ó£¬Î²²åÈ룬O(1)³ö¶Ó£¬²éÕÒµ½Î²ÔÙÖмäɾ³ý£¬O(n)£¨a£©Ê¹ÓÃ˳Ðò±í×÷Ϊ³ÉÔ±±äÁ¿ÐòºÅ01?n-1?length-1ÅÅÐò˳Ðò±ílist(A,1)(C,1)(B,2)(D,3)(F,3)(E,4)³ö¶Ó£¬Í·É¾³ý£¬O(n)£¨b£©Ê¹ÓÃÅÅÐò˳Ðò±í×÷Ϊ³ÉÔ±±äÁ¿head(E,4)(D,3)(A,1)(F,3)(B,2)(C,1)¡ÄÈë¶Ó£¬Î²²åÈ룬O(n)Èë¶Ó£¬Öмä²åÈ룬O(n)³ö¶Ó£¬²éÕÒµ½Î²ÔÙÖмäɾ³ý£¬O(n)£¨c£©Ê¹Óõ¥Á´±í×÷Ϊ³ÉÔ±±äÁ¿head(A,1)³ö¶Ó£¬Í·É¾³ý£¬O(1)£¨d£©Ê¹ÓÃÅÅÐòµ¥Á´±í×÷Ϊ³ÉÔ±±äÁ¿headÈë¶Ó£¬Î²²åÈ룬O(1)(E,4)(D,3)(A,1)(C,1)(B,2)(D,3)(F,3)

(E,4)¡ÄÈë¶Ó£¬Öмä²åÈ룬O(n)(F,3)(B,2)(C,1)³ö¶Ó£¬²éÕÒµ½Î²ÔÙÖмäɾ³ý£¬O(n)£¨e£©Ê¹ÓÃÑ­»·Ë«Á´±í×÷Ϊ³ÉÔ±±äÁ¿head(A,1)³ö¶Ó£¬Í·É¾³ý£¬O(1)(C,1)(B,2)(D,3)Èë¶Ó£¬Öмä²åÈ룬O(n)(F,3)(E,4)£¨f£©Ê¹ÓÃÅÅÐòÑ­»·Ë«Á´±í×÷Ϊ³ÉÔ±±äÁ¿Í¼4.3 ʹÓø÷ÖÖÏßÐÔ±í¶ÔÏó×÷ΪÓÅÏȶÓÁгÉÔ±±äÁ¿µÄ²Ù×÷ЧÂʱȽÏ

×ÛÉÏËùÊö£¬³ö¶Óʱ¼äÊÇO(1)µÄÓÅÏȶÓÁÐÓÐÁ½ÖÖ£¬·Ö±ðʹÓÃÅÅÐòµ¥Á´±íºÍÅÅÐòÑ­»·Ë«Á´±í£¬Ç°Õß½öÖ§³Ö°´ÓÅÏȼ¶ÉýÐòÅÅÐò£¬ºóÕßÖ§³ÖÉýÐòºÍ½µÐò¡£

4.3 µÝ¹é

¡¾Ï°4.1¡¿ ´òÓ¡Êý×ÖËþ¡£

´òÓ¡ÈçÏÂÐÎʽµÄÊý×ÖËþ£º

1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1 1 2 3 4 5 6 5 4 3 2 1

- 41 -

1 2 3 4 5 6 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 ÌâÄ¿±¾ÉíËä²»Êǵݹ鶨ÒåµÄ£¬µ«¿ÉÒÔÓõݹéËã·¨Çó½â¡£³ÌÐòÈçÏ£º

public class DigitTower {

public static void i,int n) line(int //Êä³öÒ»ÐУ¬µÝ¹é·½·¨

{ System.out.print(String.format(\ if (i

{ line(i+1,n);

System.out.print(String.format(\ } }

public static void main(String args[]) {

int n=9;

for(int i=1; i<=n; i++)

{ System.out.print(String.format(\')); //ǰµ¼¿Õ¸ñ

line(1,i);

System.out.println(); } } }

- 42 -