java_data_example

Page 1

c °2005, sangjin@kut.ac.kr

„ ę –‰ ÂŹĂ‹ ĂŹĂ? ̛ P ò Laboratory 1. Logbook ADT

1

Â? Ă—X Ă’ Ă„ ĂŹ • \  " f 6 x  &

_ Ăą Ă’ Æ ÂœX Š <s ' { (abstract data type)\ 9 Œ½ ¨Â‰ ÂłK & ‘ r : . • java.util J v t \  e Â? ” H GregorianCalendar 9 tA Ăž Ă› Âź\ ÂŚ 6 xK  Â‘ r : . • B j™ èĂ— Âź\ ÂŚ overloading Â? H~ Ă“Z ½ ` O Π Æ_ < vĂ´ Ăž Ç .

2

4 ~ Âż • 4ĂŠ Z –0 Ă&#x; A– Ă?Ă• ÂŞÂĄ ¤ ¡(monthly logbook)s ĂŞ Ă? ø 4_ Z y •¹ ÂŒ ˜ Ăş _ ° ‍`כ‏ Ăş ÂŚÂƒ › ar ' ~ ´Ăƒ Âşe Â? ” H ÂŤ Ă‘½ ¨Â› ¸s . V) y •¹ ÂŒ ˜ Ăş Â’ &x ĂŻ –_ Ă&#x; Ăƒ Âş – \ • „ + A& Ăž h “ – Ă?Ă• ÂŞÂĄ ¤ ¡_ ¸ —_ v“ Ăž r É 6 §þ ÂŁ °  ú . 2002¸ 2 4 Z 3 (3) 10 (2) 17 (2) 24 (0)

3

4 (5) 11 (3) 18 (2) 25 (1)

5 (2) 12 (5) 19 (3) 26 (4)

6 (4) 13 (0) 20 (1) 27 (1)

7 (0) 14 (5) 21 (2) 28 (0)

1 (3) 8 (3) 15 (2) 22 (3)

2 (0) 9 (0) 16 (1) 23 (0)

Logbook ADT • ½ ¨$

‍כ‏ Ă­ šÂ™ è 4ĂŠ Z –0 Ă&#x; A– Ă?Ă• ª¡ ¤` ÂĄ ÂŚ0 AĂ´ Ç&

Ăƒ Ăą º° ‍[כ‏ Ăş t_ Ăž | 9 ½ Ă‹Ăľ + – Ă?Ă• ª¡ ¤þ ÂĄ › aÂş ' Â? a² ) ˜§ Ăş 4 – • Ă? –ª Ă•¡ ¤: int[] entry = new int[31]; ÂĄ • – Ă?ÂŞ Ă•¡ ¤_ ÂĄ 4& Z

˜ Ăą Ă?: int logMonth • – Ă?ÂŞ Ă•ÂĄ ¡_ ¤ ¸ &

˜ Ăą Ă?: int year – y •& ÂŒ

Ăƒ Ăą º° ‍“כ‏ Ăş rĂ… É Ă’# Q ” 4_ Z : ¤& ÂŁ

Âą Ăą ˜\ Ăş  K { Âœ Š Â? H† Ă“s ½ . – – Ă?Ă• ª¡ ¤\ ÂĄ  e Â? ” H† Ă“_ ½ Ăƒ ÂşÂ? HĂ… Ă’# Q ” 4\ Z  Ă˜ Ă” . • ƒ Ă­ – Ă&#x; – Ă’ t$ q

Ă­ : public Logbook(int month, int year) b ‚ 9 Ă?Z : 1 ≤month≤ 12 ĂŒ • • Ă– ³‚ Ă?Z : monthĂź ĂŒ < year ° ‍\כ‏ Ăş  Â‘ – Ă?Ă• ª¡ ¤` ÂĄ ÂŚĂ’ t$ q

Ă´ Ă­ Ç . ‘ – Ă?Ă• ª¡ ¤s ÂĄ ĂŞ Ă?– ø Ă?Ă• ª¡ ¤_ ÂĄ — ¸ÂŽ H† Ă“_ ½ ° ‍כ‏ Ăş ÂŚ 0Ăœ ` Ÿ– Ă?Âœ Ă­l o Â? H ` ‍כ‏ Ϋ Â˜Ă´ Ăş Ç . Ă„ ´ ò t ¡ §Â“ Ăş r month ° É ‍\כ‏ Ăş  @ /K " fÂ? H‰ ÂłF & 4(š Z ¸Z tÂą Ăž ˜ Ăş )\  { K Âœ Š Â? HĂ? –Õ ª¡ ¤` ÂĄ ÂŚĂ’ t$ q

Ă´ Ă­ Ç . ÓÆ ½ Ă’ : public void putEntry(int day, int value) – † b ‚ 9 Ă?Z : 1 ≤day≤daysInMonth ĂŒ • • Ă– ³‚ Ă?Z : Ă’ ĂŒ Ă…# Q” Âą ˜\ Ăş  K { Âœ Š Â? H† Ă“\ ½  value ° ‍כ‏ Ăş` ÂŚ$  ÂœĂ´ Š Ç . Ă“\ ½ | P Ă?: public int getEntry(int day) Ăƒ – † • b ‚ 9 Ă?Z : 1 ≤day≤daysInMonth ĂŒ

1


• Ă– ³‚ Ă?Z : Ă… ĂŒ Ă’# Q” Âą ˜\ Ăş  K { Âœ Š Â? H† Ă“° ½ ‍`כ‏ Ăş ÂŚĂŹ Ă?¨ ø Š 8 Ă… Ă’# Q ” Âą ˜s Ăş Ă„ ´ ò t ¡ §Ăœ Ăş Ÿ€ −1` ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – public int month() • b ‚ 9 Ă?Z : \ ĂŒ 6 O § ÂŁ • Ă– ³‚ Ă?Z : Ă? ĂŒ –Õ ª¡ ¤_ ÂĄ 4& Z

˜ Ăą Ă?\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – public int year() • b ‚ 9 Ă?Z : \ ĂŒ 6 O § ÂŁ • Ă– ³‚ Ă?Z : Ă? ĂŒ –Õ ª¡ ¤_ ÂĄ ¸ • ¸&

˜ Ăą Ă?\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – public int daysInMonth() • b ‚ 9 Ă?Z : \ ĂŒ 6 O § ÂŁ Ă– ³‚ Ă?Z : – ĂŒ Ă?Ă• ª¡ ¤_ ÂĄ 4\ Z  8 xÂą Ăş Â˜Ăƒ Ăş Âş\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . daysInMonth(int month) B j™ èĂ— Âź\ ÂŚs 6 xĂ´  Ă‡ . • – public int daysInMonth(int month) • b ‚ 9 Ă?Z : 1 ≤month≤ 12 ĂŒ • Ă– ³‚ Ă?Z : Ă? ĂŒ –Õ ª¡ ¤_ ÂĄ 4\ Z  8 xÂą Ăş Â˜Ăƒ Ăş Âş\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . „ › ¸| \  0 AC á &€ −1\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – private boolean isLeapYear() • b ‚ 9 Ă?Z : \ ĂŒ 6 O § ÂŁ • Ă– ³‚ Ă?Z : Ă? ĂŒ –Õ ª¡ ¤_ ÂĄ ¸ • ¸ ĂŽ r¸ s € true\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚ, m € false\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç .

4

PreLab • y Âœ_ Š < ĂŒ` Â…s t  \" f Logbook.java\ ÂŚ ĂŽ r~ ĂŽ Ăƒ ¢ a$

í . ¢ a$

K Ă­ Â? HB j™ èĂ— ÂźÂ? H 6 §þ ÂŁ °  ú . – public Logbook(int month, int year) – public int getEntry(int day) – private boolean isLeapYear() • ½ ¨Â‰ Âłr & Ă„ Âť_ † Ă“ ½ „ › ¸| [ t` Ăž ÂŚ ÂŽ K 9, „ › ¸| ` ÂŚĂŤ –7 Ă&#x; ¤ ĂĄ t 3 w l € š ¸Ă€ Ă“B jr t \ ÂŚÂł Ă°ĂŻ rĂ˜ Τ Ăœ 4 Ÿ– Ă?Ă˜ Τ 4 . – \ V) void putEntry(int day, int value) public void putEntry(int day, int value){ if(day > daysInMonth() || day < 1) System.out.println("Invalid day of month!"); else entry[day-1] = value; } – q Ă’$ t

Ă­ \ Œ½ ¨Â‰ ³½ & ÉM + :Ă… Ă’# Q ” 4& Z

˜ Ăą Ă? „ › ¸| ` ÂŚĂ˜ ĂŚ7 ¤ ĂĄ t ¡ §Ăœ Ăş Ÿ€ GregorianCalendar_ get B j ™ èĂ— Âź\ ÂŚs 6 x  # Œ‰ ÂłF & 4Ăľ Z ¸ • ¸&

˜ Ăą Ă?\ ÂŚ% # 3 Q Logbook_ Ă? r! l Q Ăƒ Âş[ t` Ăž ÂŚÂœ Ă­l oĂ´ Ç . s M : get B j™ è Ă— ÂźÂ? H 1 4` Z ÂŚ 0, . . ., 12 4“ Z r 11– É Ă?ĂŹ Ă?¨ ø Šô 8 Ç Â? H ` ‍כ‏ ÂŚĂ„ Âť _K Ă´ Ç . – GregorianCalendar\ ÂŚ 6 x  l 0 AK " fÂ? H java.util.GregorianCalendar` ÂŚ importK Ă´ Ç . ¢ ¸ô Ç get B j™ èĂ— Âź_ “ – Ă? 6 xá  &Â? H # ÂŒ Q ÂœÂş Š Ăƒ[ t“ Ăž r Calendar 9 É tA Ăž Ă› Âź\  &

_ Ăą á &# Q e Ăœ ” ŸÙ Ÿ– Ă? java.util.Calendar• ¸ importK Ă´ Ç . – isLeapYear() B j™ èĂ— ÂźÂ? H GregorianCalendar_ isLeapYear B j™ èĂ— Âź\ ÂŚ 6 xĂ´  Ă‡ . • ¢ a$

` Ă­ ÂŚ € 6 § Study 9 ÂŁ tA Ăž Ă› Âź\ ÂŚs 6 x  # ÂŒ_ Â…Ă› Ÿà Ôô Ç . class Study { // Records number of hours studied for August 2005. public static void main(String args[]){ int day; // Day loop counter // Number of hours studied for August 2005. Logbook studylog = new Logbook(8, 2005); // Record entries for the 1st, 7th, 11th of August 2003 2


studylog.putEntry(1, 5); studylog.putEntry(7, 3); studylog.putEntry(11, 3); // Output the logbook entries. System.out.println("Month/Year : " + studylog.year() + "." studylog.month() + "."); for(day = 1; day <= studylog.daysInMonth(); day++) System.out.println(day + " : " + studylog.getEntry(day) + "hours"); } // main() } // class Study

• Test1 9 tA Ăž Ă› Âź\ ÂŚ Study 9 tA Ăž Ă› Ÿß <Ă„ Âť > ĂŤ –[ Ă&#x; t# Ăž Q 6 §° ÂŁ ‍[כ‏ Ăş t` Ăž ÂŚĂ˜ Τ 4 # ÂŒ½ ¨Â‰ Âłs & ` ÂŚ Ă˜ Ă”> á &% Â? 3 Ht S ‰“ X Ç Ă´ . _ Â…Ă› Ÿà Ă” –í Ă&#x; ĂŠ H² ˜ Ăş Ăľ p A ÂłF & ‰ 2 4(ĂŽ Z r¸ s Â?

Ă„ â Âş) 2 4(ĂŽ Z r¸ ) Ă„ ´ ò t ¡ §Â“ Ăş r² É ˜ Ăş

ÂŽ ² ˜ Ăş 2004.1. 2002.6. 2005.3.

² ˜_ Ăş Âą Â˜Ăƒ Ăş Âş 31

s ÂœĂ„ Š à º

1997.2. 2004.2. 2002.13.

ĂŠr < ` ÂŚ Â? rĂş É ‍כ‏ °s Ă˜ Τ á 4 &t ¡ §Ăœ Ăş Ÿ€ š ¸Ă€ Ă“\ Œš Ă” 1 Ăƒ Âş&

ô ù Ç .

5

In-Lab • 6 §B ÂŁ j™ èĂ— Âź\ ÂŚ Logbook 9 tA Ăž Ă› Âź\  Ă† Ă’ . – void displayCalendar() • b ‚ 9 Ă?Z : \ ĂŒ 6 O § ÂŁ • Ă– ³‚ Ă?Z : ĂŒ 6 §þ ÂŁ °  Â“ Ăş r+ É AI Ăž – Ă?– Ă?Ă• ª¡ ¤` ÂĄ ÂŚĂ˜ Τ Ă´ 4 Ç . Sun

Mon

Tue

2002. 2. Wed

Thu

3 (3) 10 (2) 17 (2) 24 (0)

4 (5) 11 (3) 18 (2) 25 (1)

5 (2) 12 (5) 19 (3) 26 (4)

6 (4) 13 (0) 20 (1) 27 (1)

7 (0) 14 (5) 21 (2) 28 (0)

Fri 1 (3) 8 (3) 15 (2) 22 (3)

Sat 2 (0) 9 (0) 16 (1) 23 (0)

displayCalendar\ Œ½ ¨Â‰ Âł & l 0 AK " fÂ? HĂ… Ă’# Q” ² ˜ Ăş_ '  Ă? P :Âą ˜_ Ăş ‍כ‏ š{ 9 ` Œ¡ ˜ Ăş Ă´ Ç . s \ ÂŚ0 AK 6 §þ ÂŁ °  Â“ Ăş rB É j™ èĂ— Âź\ Œ€ $ ½ ¨Â‰ ³ô & Ç . – int dayOfWeek(int day) b ‚ 9 Ă?Z : 1 ≤day≤daysInMonth ĂŒ • • Ă– ³‚ Ă?Z : Ă’ ĂŒ Ă…# Q” Âą ˜_ Ăş ‍כ‏ š{ 9 ` ÂŚ ? /Â? H&

Ăƒ Ăą Âş\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . 0Ă‚ Ă’' 6 t _ &

Ăƒ Ăą º° ‍`כ‏ Ăş ÂŚ 6 x  9, 0“ r É ‍כ‏ 9 { š{ ` 9 ÂŚ, 1Ă‚ Ă’' 6“ r É 4‍כ‏ Z š{ Ă‚ 9 Ă’' ž Ă?‍כ‏ š{ ` 9 ÂŚ Y V– Ă? p ¡ . $ € set` ÂŚs 6 x  # ÂŒĂ? r! l Q Ăƒ Âş logCalendar Ă… Ă’# Q ” Âą ˜` Ăş ÂŚ o v • ¸2 ¤[ Â&#x; & O

Ă´ Ăą Ç . Ă• ÂŞ 6 §\ ÂŁ  get` ÂŚ s 6 x  # ÂŒâ€Ť×›â€Ź š{ 9 ` Œ¡ ˜ Ăş p ¡ . s M : get“ r 1Ă‚ É Ă’' 7 t _ ° ‍`כ‏ Ăş ÂŚĂŻ r Â? H \ ‍כ‏  Ă„ Âť_ K Ă´ Ç . tA Ăž Ă› Âź\ ÂŚ Study 9 tA Ăž Ă› Ÿß <Ă„ Âť > ĂŤ –[ Ă&#x; t# Ăž Q 6 §° ÂŁ ‍[כ‏ Ăş t` Ăž ÂŚĂ˜ Τ 4 # ÂŒ½ ¨Â‰ Âłs & ` ÂŚ Ă˜ Ă”> á &% Â? 3 Ht – Test2 9 ‰ X S “ Ă´ Ç .

3


_ Û ¼à Ô í ß é H² ú õ p A ³F & 2 4(î Z r¸ s

Ä â º) 2 4(î Z r¸ )

² ú 2001.4. 1998.12. 2005.12.

² ú_ ' Í P :± _ ú ‫כ‬ ¹{ 9 ‫כ‬ 9 { ¹{ 9 o‫כ‬ ¹{ 9 º‫כ‬ Ã ¹{ 9

2002.2. 2004.2.

F‫כ‬ K ¹{ 9 ‫כ‬ 9 { ¹{ 9

s Ä © »Á º

Êr < ` ¦ r° É ‫כ‬s ú Ø ¦§ ÷ 4 &t · §Ü ú ¼ ¸À Ó\ ¦¹ Ô 1 à º&

ô ñ Ç . • \ " f H° ú rs É 2 §_ £ j B è× ¼\ ¦# Q> h&

_ ñ ½ ÉÃ + ºe . Ó t ü rs : M :y B j è× ¼_ " f"

î r² É ú ô Ç . 6 § £ ¦ `½ ¨ ³ & . – Logbook() b 9 ÐZ : \ Ì 6 O §. £ • • Ö ³ ÐZ : Ì l rÒ : tí q

$ Ð" f, ³F & ² \ ú K { © H ÐÕ ª· ¤` ¡ ¦Ò t$ q

í # ï r . – void putEntry(int value) • b 9 ÐZ : Ð Ì Õ ª· ¤s ¡ ³F & 4 Z Ð[ & O

÷ ñ &# Qe # Q ô Ç . • Ö ³ ÐZ : ¸ Ì Z tú þ ± \ K { © H Ó\ ½ value ° ‫כ‬ ú` ¦$ ô © Ç . • # Q> h_ Ъ Õ· ¤` ¡ ¦ н Ëu + ¦z · . s \ ¦0 AK 6 §õ £ ° ú r É í ` ß ¦ Logbook 9 tA þ Û ¼\ Æ Ò ô Ç . – void plus(Logbook aBook) • b 9 ÐZ : Ð Ì Õ ª· ¤[ ¡ ts þ ° ú r² É ú Ð[ & O

÷ ñ &# Qe # Q ô Ç . Ö ³ ÐZ : abook\ Ì e Hy Ó_ ½ ° ‫`כ‬ ú ¦s ÐÕ ª· ¤\ ¡ K { © Hy Ó\ ½ 8ô Ç . •

6

Post-Lab • GregorianCalendar\ ¦s 6 x t · § ú ¦î r¸ #  Ò\ ¦> í ß H 6 §B £ j è× ¼\ ¦½ ¨ ³ & . private boolean leapYear(int year) ³ 2à Ô. î r¸ s ÷ &l 0 Aô Ç ¸| ¸ 4_ C à ºs t ë 100_ ß C à º H m . – ¸ – ¸ ¸ 400_ C à ºs . • GregorianCalendar\ ¦s 6 x t · § ú ¦ private int dayOfWeek(int day)\ ¦½ ¨ ³ & . ³ 2à Ô. 1900¸ 1 4 1{ Z 9 r É 4‫כ‬ Z ¹{ s 9 H z ´` ¦s 6 xô Ç .

4


c °2005, sangjin@kut.ac.kr

„ ę –‰ ÂŹĂ‹ ĂŹĂ? ̛ P ò Laboratory 2. String ADT

1

Â? Ă—X Ă’ Ă„ ĂŹ • s Ăš Ă” Q o\  " f] j/ N B Â? H String 9 tA Ăž Ă› Âź_ ĂŠ –& Ă&#x; ` h Œ¡ ˜ Ăş ‘ r : . tA Ăž Ă› Âź\ ÂŚS ‰ X ÂœK Š ‘ r : . • String 9

2

4 ~ Âż • ĂŤ H \ “ P rĂĄ É Ԗ Ă?Ă• ÂŞA b ç

½ ÉM + :  Âœ´ Š §s Ăş 6 x  Â? H { Ă— 9 ĂŚ s . \  Â? HĂŤ H \ P { 9 s ” rF > t ĂŤ –& Ă&#x;

Ăą Ăƒ Âş\ ÂŚ Ă’ ÂŚM : 6 x  Â? H intĂź <°  Â“ Ăş r É { 9 s 2 §s ÂŁ ^ ‰\  Â? H\ O . @ /Â’ \  Í H \ Âź P o # > % ƒo ½ Ă‰Ăƒ + Âşe ” • ¸2 ¤ Strings Â&#x; Â? H9 tA Ăž Ă› Âź \ ÂŚ s Ăš Ă” Qo \ ÂŚ: xK Â&#x; ] j/ NĂ´ B Ç . • String“ r9 É tA Ăž Ă› Âźs Ă™ Ÿ– Ă?" Âśr ĂŠ { 9 ` ÂŚ Ă€ Ă’Â? H Ăľ ‍כ‏ Â? H 6 § ÂŁĂľ °  Â“ Ăş r É s & s h e ” . – ĂŤ H \ “ P r Éq “ §Âƒ Ă­ – Ă&#x; \ ÂŚs 6 x  # ÂŒq “ §½ Ă‰Ăƒ + Âş\ “ O ÂŚ, String 9 tA Ăž Ă› Âź\  " f] j/ N B Â? H 6 §¿ ÂŁ ÂşB j™ èĂ— Âź\ ÂŚ s 6 x  # ÂŒq “ §K Ă´ Ç . • boolean equals(Object other) • int compareTo(String other) ĂŤ H \ _ P ? /6 x“  r Ă‰

½ â Ă‰Ăƒ + Âş\ O . 7 ¤, String 9 ÂŁ tA Ăž Ă› Âź_ “ Ă› Ÿ‡ Ă› ÂźÂ? HĂ´ Ç ? /Ă‚ Ă’ ÂœI Š \ ÂŚ[ & O

Ăą € Ă• ÂŞ Âœ Š – I \ ÂŚÂ

½ â Ă‰Ăƒ + Âş\ Â? O H¡ ÂŁ >[ o cW Ă‹ Â…(immutable object)s . s M :ĂŤ H\  Í H \ _ P ? /6 x`  ŒĂƒ Âşr – Ă?Â

K â ´ € òĂ– ÂŚ$

s Ă­ b # Â? Q” . " fĂŤ H \ _ P ? /6 x` Â ÂŚĂƒ Âş r– Ă?Â

K â � H

Ă„ â Âş\  Â? H String 9 tA Ăž Ă› ÂźÂ˜ Ă? H StringBuffer 9 Â? tA Ăž Ă› Âź\ ÂŚ 6 x  Â? H s ‍כ‏ 8 | Ă?f Ăƒ ” . – \  " fĂŒ o^ Â? ‰Â? H˜ Ă?: x new ƒ Â&#x; Ă­ – Ă&#x; \ ÂŚs 6 x  # ÂŒĂ’ t$ q

K Ă­ t ĂŤ – String 9 Ă&#x; tA Ăž Ă› ÂźÂ? H\ VĂź @& Ăœ h Ÿ– Ă? 6 x  t ¡ Ăş §Â“ ÂŚĂ’ t$ q

½ Ă­ Ă‰Ăƒ + Âşe ” . String name = "Sangjin Kim"; • â€?Sangjin Kimâ€?Ăœ Ÿ– Ă?Âœ Ă­l oÂ? a name ĂŒ ) o^ Â? ‰\  Â? rĂŤ É H \ ` P ÂŚ@ /{ 9 € l ” r â€?Sangjin Kimâ€? ĂŤ > H \ “ P r garbage É collection_ @ / Âœs Š Â? a ) . • String 9 tA Ăž Ă› ÂźÂ? HÂŞ Ă• _ ‍כ‏ ´ Us \ ÂŚĂŹ Ă?¨ ø Š 8 Â? H length() Â? HB j™ èĂ— Âź\ ÂŚ] j/ NĂ´ B Ç .

3

String ADT • String ADTÂ? H java.lang J v t \ ÂŚ: xK Â&#x; ] j/ Ná B &Â? H ADTs . • ½ ¨$

‍כ‏ Ă­ šÂ™ è: ĂŤ H _ | ½ 9 Ă‹ + • ½ ¨Â› ¸: ĂŤ H \ ` P Œ½ ¨$

Ă­ Â? HĂŤ H Â? H‚ + AĂ­ Ăž H" f\ ÂŚ ” . ĂŤ H _ 0 Au Â? H 0Ă‚ Ă’' r  Â•Â? ÂŒ a ) . • ƒ Ă­ – Ă&#x; – l ‘ rĂ’ : t$ q

Ă­ : String() • Ă– ³‚ Ă?Z : / ĂŒ ?6 xs  Â‘ D h String ĂŒ o^ Â? ‰\ ÂŚĂ’ t$ q

ô í Ç . t$ q

Ă­ : String(char[] charSeq) – Ă’ • Ă– ³‚ Ă?Z : Ă’ ĂŒ Ă…# Q” ĂŤ H \ ` P ÂŚ o v Â? H String ĂŒ o^ Â? ‰\ ÂŚĂ’ t$ q

ô í Ç . – Ò t$ q

Ă­ : String(String str) • Ă– ³‚ Ă?Z : Ă… ĂŒ Ă’# Q” String ĂŒ o^ Â? ‰ strĂľ ? /6 xs  °  Â“ Ăş rĂŤ É H \ ` P ÂŚ o v Â? HD h– Ă?ĂŽ rĂŒ o^ Â? ‰\ ÂŚĂ’ t$ q

ô í Ç . h\ D v> Ò t$ q

Â? Ă­ aĂŒ ) o^ Â? ‰Â? Hl ” r strĂľ > ? /6 xs  °  t Ăş ĂŤ –" Ă&#x; f– Ă? Â? r4 É ¤ Â&#x; ‘ r` : ÂŚ o v “ ÂŚe ” . 1


– char charAt(int n) • b ‚ 9 Ă?Z : 0≤n<length() ĂŒ • Ă– ³‚ Ă?Z : n ĂŒ P :ĂŤ H \ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . • \ VĂź @: StringIndexOutOfBoundsException – ĂŤ H \ q P “ §: int compareTo(String str) • b ‚ 9 Ă?Z : str!=null ĂŒ • Ă– ³‚ Ă?Z :  ĂŒ ĂąĂ˜ ÂŚÂ? aĂŒ ) o^ Â? ‰_ ĂŤ H \ ? P /6 xs  Â„ Ă­ H" f\  " f str˜ Ă? ¡ ÂĄ\ Ăş  e Ăœ ” Ÿ€ 6 §Ăƒ ÂŁ Âş\ ÂŚ, °  Ăœ Ăş Ÿ€ 0` ÂŚ, '\ +  e Ăœ ” Ÿ€ € ÂœĂƒ ÂŞ Âş\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . VĂź @: NullPointerException • \ – boolean equals(String rightstr) • Ă– ³‚ Ă?Z :  ĂŒ ĂąĂ˜ ÂŚÂ? aĂŒ ) o^ Â? ‰_ ĂŤ H \ ? P /6 xs  rightstr ĂŒ o^ Â? ‰_ ĂŤ H \ ? P /6 xĂľ  °  Ăœ Ăş Ÿ€ true\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – String substring(int start) • b ‚ 9 Ă?Z : 0 ≤start<length() ĂŒ • Ă– ³‚ Ă?Z : start 0 ĂŒ Au Ă‚ Ă’' l ” rĂŤ > H \ = P Q ĂĽ t – Ă?½ ¨$

Â? Ă­ aD ) h String ĂŒ o^ Â? ‰\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . • \ VĂź @: StringIndexOutOfBoundsException – String substring(int start, int end) b ‚ 9 Ă?Z : 0 ≤start<length(), end<length(), start<end ĂŒ • • Ă– ³‚ Ă?Z : start 0 ĂŒ Au Ă‚ Ă’' end-1 t – Ă?½ ¨$

Â? Ă­ aD ) h String ĂŒ o^ Â? ‰\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . • \ VĂź @: StringIndexOutOfBoundsException – int indexOf(int ch) • Ă– ³‚ Ă?Z : Ă’ ĂŒ Ă…# Q” ĂŤ H ch  ùĂ˜ ÂŚÂ? aĂŒ ) o^ Â? ‰_ ĂŤ H \ \ P  " f% ƒ6 §Ăœ ÂŁ Ÿ– Ă?1 x p Âœ Š Â? H0 Au \ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . Ă… Ă’ Q” # ĂŤ H ĂŤ H \ \ P  1 x p Âœ Š t ¡ §Ăœ Ăş Ÿ€ −1` ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – int indexOf(int ch, int start) • b ‚ 9 Ă?Z : 0 ≤start<length() ĂŒ • Ă– ³‚ Ă?Z : Ă… ĂŒ Ă’# Q” ĂŤ H ch  ùĂ˜ ÂŚÂ? aĂŒ ) o^ Â? ‰_ ĂŤ H \ \ P  " f% ƒ6 §Ăœ ÂŁ Ÿ– Ă?1 x p Âœ Š Â? H0 Au \ ÂŚĂŹ Ă?¨ ø Š 8 Â? HX < ÂŽ o` Â? Ă’ ÂŚ% ƒ6 §Ă‚ ÂŁ Ă’' t ¡ §Â“ Ăş ÂŚ start 0 Au Ă‚ Ă’' Ă´ Ç . Ă… Ă’# Q ” ĂŤ H ĂŤ H \ \ P  1 x p Âœ Š t ¡ §Ăœ Ăş Ÿ€ −1` ÂŚ Ă?¨ ø ĂŹ Šô 8 Ç .

4

PreLab • < ĂŒ` Â…s t \  Ă’ Ă…# Q” TestString 9 tA Ăž Ă› Âź\  l ” r String ADT\ > ÂŚs 6 x  # ÂŒ 6 §B ÂŁ j™ èĂ— Âź[ t` Ăž Œ½ ¨Â‰ Âł & # ÂŒ . – static void showStructure(String str) • b ‚ 9 Ă?Z : str!=null ĂŒ • Ă– ³‚ Ă?Z : ĂŤ ĂŒ H \ \ P  Â&#x; í† ĂŠÂ? < aĂŤ ) H \ ÂŚ m ” Y VĂ? Â–Ă˜ Τ Ă´ 4 Ç . j™ èĂ— Âź\ ÂŚs 6 x  # ÂŒ½ ¨Â‰ ³ô & Ç . • charAt B – static boolean lessThan(String leftstr, String rightstr) • b ‚ 9 Ă?Z : leftstr!=null, rightstr!=null ĂŒ Ă– ³‚ Ă?Z : Ă… ĂŒ Ă’# Q ” Âż ºÍ H \ ` P ÂŚq “ § # ÂŒ leftstrs rightstr˜ Ă? „ Ă­ H" f Âœ¡ Š ÂĄ\ Ăş  e Ăœ ” Ÿ€ • true\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚ, °  ú + '\  e Ăœ ” Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . j™ èĂ— Âź\ ÂŚs 6 x  # ÂŒ½ ¨Â‰ ³ô & Ç . • compareTo B – static boolean greaterThan(String leftstr, String rightstr) • b ‚ 9 Ă?Z : leftstr!=null, rightstr!=null ĂŒ • Ă– ³‚ Ă?Z : Ă… ĂŒ Ă’# Q ” Âż ºÍ H \ ` P ÂŚq “ § # ÂŒ leftstrs rightstr˜ Ă? „ Ă­ H" f Âœ+ Š '\  e Ăœ ” Ÿ€ true\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚ, °  ú ¡ ÂĄ\ Ăş  e Ăœ ” Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . j™ èĂ— Âź\ ÂŚs 6 x  # ÂŒ½ ¨Â‰ ³ô & Ç . • compareTo B – static int strCharCount(String inputstr, char ch) • b ‚ 9 Ă?Z : inputstr!=null ĂŒ 2


• Ă– ³‚ Ă?Z : Ă’ ĂŒ Ă…# Q” inputstr\  " f ch ĂŤ H 1 x p Âœ Š Â? H rĂƒ Âş\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . • indexOf B j™ èĂ— Âź\ ÂŚs 6 x  # ÂŒ½ ¨Â‰ ³ô & Ç . – static String findSubstring(String inputstr, int start, int count) • b ‚ 9 Ă?Z : 0 ≤start<inputstr.length(), count>0, ĂŒ start+count<inputstr.length(), inputstr!=null • Ă– ³‚ Ă?Z : inputstr\ ĂŒ  " f startĂ‚ Ă’' count ĂŤ – Ă&#x; p u_ ĂŤ H – Ă?½ ¨$

Â? Ă­ aD ) hĂŒ o^ Â? ‰\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . „ ¸| › \  A 0C á &€ & ] h Ă´ X Ç ÒÏ rĂŤ H \ ` P ÂŚĂŹ Ă?¨ ø Šô 8 Ç . 7 ¤, start 0˜ ÂŁ Ă?  Â•Ăœ ÂŒ Ÿ€ 0° â€Ť×›â€ŹĂœ Ăş Ÿ– Ă?[ & O

Ăą “ ÂŚ, start+count>inputstr.length()s € startĂ‚ Ă’' ĂŤ H \ = P Q ĂĽ t – Ă?½ ¨$

Â? Ă­ aĂ‚ ) Ă’ĂŹ rĂŤ H \ ` P ÂŚ Ă?¨ ø ĂŹ Šô 8 Ç . j™ èĂ— Âź\ ÂŚs 6 x  # ÂŒ½ ¨Â‰ ³ô & Ç . • subString B

5

In-Lab 1 • å Ԗ �Õ ªA b

Â? ç ĂŻĂ— Âź\ ÂŚ(

ÂŽ { 9 l 0 AK " fÂ? HĂĄ Ԗ Ă?Ă• ÂŞĂ? ›Â? Ăž ĂŻĂ— Âź\ ÂŚĂŹ r$ ½ 3 Ă‰Ăƒ + Âşe # ” Q Ă´ Ç . ĂŹ r$ ` 3 ÂŚ l 0 AK " fÂ? H ĂĄ Ԗ Ă?Ă• ÂŞĂ? ›` Ăž ÂŚÂ? Ho 7 & ĂŠ h –0 Ă&#x; A“ Ă? ž HĂœ Ÿ– Ă?Ă„ º‚ ž Âş# Q Ă´ Ç . \ V) if(grade >= 90) return ’A’; 0 AĂź <°  Â“ Ăş r É Â? ĂŻĂ— Âź e Ăœ ” Ÿ€ (

ÂŽ { 9 QÂ? HĂ„ º‚ s Â? ĂŻĂ— Âź\ ÂŚ 6 §þ ÂŁ °  Â“ Ăş rž É Ă? HĂœ Ÿ– Ă?½ ¨Ï rĂ´ Ç . "if", "(", "grade", ">=", "90", ")", "return" "’", "A", "’", ";" • \  " fž Ă? H _ĂŹ ro Â? H java.io J v t \  e Â? ” H StringTokenizer 9 tA Ăž Ă› Âź\ ÂŚs 6 x½  Ă‰Ăƒ + Âşe ” . Ă?H ` ÂŚĂŹ ro l „ \ Â

{ ¢ 9 ¸Â? Hv ˜ Ă?Ă— Ÿ– Ă?Ă‚ Ă’' ĂŹ ro ½ É/ + ?6 x`  Œ~ ĂŽ Ăƒ 9, v ˜ Ă?Ă— Ÿ¢ ¸Â? H

{ 9 – Ă?Ă‚ Ă’' X <s • ž ' \ ÂŚ{ 9 ` ÂŚM :\  Â? H InputStreamReader 9 tA Ăž Ă› Âź\ ÂŚ 6 xĂ´  Ă‡ . InputStreamReader reader = new InputStreamReader(System.in); §Â“ Ăş rX É <s ' \ ÂŚ{ 9 # Q ½ É +

Ă„ â Âş\  Â? H! Q( a A` ÂŚ 6 x  Â? H BufferedReader 9 tA Ăž Ă› Âź\ ÂŚ 6 x  Â? H s ‍כ‏ | Ă?f Ăƒ ” • ´ . BufferedReader bufReader = new BufferedReader(new InputStreamReader(System.in)); •

{ 9 – � Ò' X <s ' \ Œ{ 9 “ Œ € FileInputStream 9 tA Þ Û Ÿ\ Œs 6 xô  Ç .

{ 9 \  e � ” HX <s ' \ Œ{ l 9 0 A K " f� H

{ ` 9 Œ€ $ \ # P Q 9, 6 xs  ¢ aÂŤ Ă‘á &€ { — ÂŒ Ă´ Ç . FileInputStream inFile; try{ inFile = new FileInputStream("1.txt"); } catch(FileNotFoundException e){ System.out.println("Error Openning a file"); System.exit(0); } BufferedReader bufReader = new BufferedReader(new InputStreamReader(inFile)); ... inFile.close();

• BufferedReaderÂ? HÂż Âşh >_ { 9 l B j™ èĂ— Âź readĂź < readLine` ÂŚ] j/ NĂ´ B Ç . readÂ? HĂŤ H ĂŠ –0 Ă&#x; A– Ă?{ “ 9 ÂŚ, readLine“ rĂ— É ÂŚĂŠ –0 Ă&#x; A– Ă?{ 9 Â? H . readÂ? H int\ ÂŚĂŹ Ă?¨ ø Š 8 Ă™ Ÿ– Ă? char– Ă? { 9  ¨ ŠK 8 Ă´ Ç . readLine“ r{ É “ 9 r É ÂŚ` Ă— ÂŚĂŤ H \ – P Ă?ĂŹ Ă?¨ ø Šô 8 Ç . char readChar; String readStr; ... char readChar = (char)bufReader.read(); ... String readStr = bufReader.readLine(); v t \  " f] j/ Ná B &Â? H9 tA Ăž Ă› Âź • StringTokenizer ADT: java.util J 3


– Ò t$ q

Ă­ : StringTokenizer(String str) • Ă– ³‚ Ă?Z : ĂŤ ĂŒ H \ str` P Œž Ă?H Z – > Ă? Ă? tD Ăź h– Ă?ĂŽ r StringTokenizer\ ÂŚĂ’ t$ q

Ă´ Ă­ Ç . • l : ‘& r Ăœ h Ÿ– Ă? 6 x  Â? HĂŹ ro Â? H/ NĂ‘ B Â˜ĂŤ Ăž H , Ăą ÂœĂŤ Ă H , D h “ s . – int countTokens() Ă– ³‚ Ă?Z : ÂŒ ĂŒ ™ z“ rĂ? É žH _ > hĂƒ Âş\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . • – boolean hasMoreTokens() • Ă– ³‚ Ă?Z : ĂŤ ĂŒ H \ \ P  f ĂŹ ” ro t ¡ §Â“ Ăş rž É Ă?H s e Ăœ ” Ÿ€ true\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – String nextToken() • b ‚ 9 Ă?Z : ĂŤ ĂŒ H \ ? P /\  f ĂŹ ” ro t ¡ §Â“ Ăş rž É Ă?H s e # ” Q Ă´ Ç . Ă– ³‚ Ă?Z : ĂŒ 6 §Ă? ÂŁ žH ` ÂŚĂŤ H \ – P Ă?ĂŹ Ă?¨ ø Šô 8 Ç . • • \ VĂź @: NoSuchElementException • String, BufferedReader, StringTokenizer 9 tA Ăž Ă› Âź\ ÂŚs 6 x  # ÂŒ% Â˜Ă› 7 Ÿà Ă”

{ 9 ` Œž Ă? HZ – > Ă?ĂŹ ro Â? H ĂĄ Ԗ Ă?Ă• ÂŞĂ? › Lexical.java\ Ăž ΢ a$

Ă­ . s ĂĄ Ԗ Ă?Ă• ÂŞĂ? ›“ Ăž r É 6 §þ ÂŁ °  s Ăş Ă˜ Τ K 4 Ă´ Ç . 1: Ă? ' P :ž Ă?H 2: Âż Âş  P :ž Ă? H ... s ĂĄ Ԗ Ă?Ă• ÂŞĂ? ›` Ăž Œ •“ ÂŒ r É ĂĄ Ԗ Ă?Ă• ÂŞĂ? ›™ Ăž èĂ› Âź

{ ` 9 ÂŚs 6 x  ÂŒ #z ´' Â?K Â&#x; ‘ r : .

6

In-Lab 2 o^ Â? ‰Â? HĂ” ÂŚÂ ĂŒ o^ Â? ‰s . 7 ¤, Ă´ ÂŁ Ç Í H \ – P Ă?[ & O

á Ăą &€ Ă• ÂŞĂŤ H \ _ P ? /6 x  Œ `Â

½ â Ă‰Ăƒ + Âş\ O . • String ĂŒ • Ă&#x; ̀ – •[ Â? & O

Â? Ăą aĂŤ ) H \ _ P ? /6 x  Œ ` Ă‹ ¨ Ă‹ ¨# Q € String 9 tA Ăž Ă› Âź@ / Â’ \  StringBuffer 9 tA Ăž Ă› Âź\ ÂŚ 6 x  Ă‰Ăƒ + ½ Âşe ” . • StringBuffer ADT t$ q

Ă­ : StringBuffer() – Ă’ • Ă– ³‚ Ă?Z : 6 ĂŒ x|  Ă“s ž 16“ StringBuffer ĂŒ o^ Â? ‰\ ÂŚĂ’ t$ q

Ă´ Ă­ Ç . 16> h_ — ¸ÂŽ HĂŤ H \ ? P /\  0 Au Â? H null– Ă? Ă­l Âœ oÂ? a ) . – Ă’ t$ q

Ă­ : StringBuffer(int size) • b ‚ 9 Ă?Z : size>0 ĂŒ • Ă– ³‚ Ă?Z : 6 ĂŒ x|  Ă“s ž size“ StringBuffer ĂŒ o^ Â? ‰\ ÂŚĂ’ t$ q

Ă´ Ă­ Ç . — ¸ÂŽ HĂŤ H \ ? P /\  0 Au Â? H null– Ă?Âœ Ă­ l oÂ? a ) . – Ă’ t$ q

Ă­ : StringBuffer(String str) • Ă– ³‚ Ă?Z : Ă… ĂŒ Ă’# Q” str– Ă?G 0 > ” StringBuffer ĂŒ o^ Â? ‰\ ÂŚĂ’ t$ q

Ă­ “ ÂŚ, Æ Ă’ – Ă? 16> h_ ĂŤ H \ ÂŚ$  Âœ½ Š É + Âşe Ăƒ Â? ” HB N /ç –` Ă&#x; ÂŚS ‰˜ X Ă?Ă´ Ç . 7 ¤, Ă’ ÂŁ t$ q

Â? Ă­ aĂŒ ) o^ Â? ‰_ 6 x|  Ă““ ž r str.length()+16s É . – StringBuffer append(String str) • Ă– ³‚ Ă?Z : Ă’ ĂŒ Ă…# Q” str\ ÂŚÂ ĂąĂ˜ ÂŚÂ? a StringBuffer ĂŒ ) o^ Â? ‰_ ? /6 x+  '\  ½ Ă‹Ă´ + Ç . – StringBuffer append(char c) Ă– ³‚ Ă?Z : Ă’ ĂŒ Ă…# Q” ĂŤ H c\ ÂŚÂ ĂąĂ˜ ÂŚÂ? a StringBuffer ĂŒ ) o^ Â? ‰_ ? /6 x+  '\  Ă† Ă’ Ă´ Ç . • – int capacity() • Ă– ³‚ Ă?Z : Ăą ĂŒ  Ă˜ ÂŚÂ? aĂŒ ) o^ Â? ‰_ 6 x|  Ă“` ž ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – int length() • Ă– ³‚ Ă?Z : Ăą ĂŒ  Ă˜ ÂŚÂ? aĂŒ ) o^ Â? ‰\  $  Âœá Š &# Qe Â? ” HĂŤ H \ _ P U ´s \ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – char charAt(int n) • b ‚ 9 Ă?Z : n“ ĂŒ r StringBuffer_ É Ă&#x; Âźl ˜ Ă?  Â• ÂŒ 9, € Âœ_ ÂŞ &

Ăƒ Ăą Âşs # Q Ă´ Ç . • Ă– ³‚ Ă?Z : Ăą ĂŒ  Ă˜ ÂŚÂ? aĂŒ ) o^ Â? ‰_ n P :ĂŤ H \ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – StringBuffer delete(int start, int end) 4


• b ‚ 9 Ă?Z : 0 ≤start<length(), start<end ĂŒ • Ă– ³‚ Ă?Z :  ĂŒ ĂąĂ˜ ÂŚÂ? aĂŒ ) o^ Â? ‰_ ĂŤ H \ \ P  " f startĂ‚ Ă’' end t _ ĂŤ H \ ÂŚ] j Ă´ Ç . end s ĂŠ ĂŞ_ ĂŤ H t“ Ăž [ r¢ É aA , ¤Ăœ ĂĄ Ÿ– Ă?s 1 xĂ´ l Ç . end ĂŒ o^ Â? ‰_ U ´s ˜ Ă? U ´Â€ startĂ‚ Ă’' ĂŤ H \ _ P = Q ĂĽ t _ ĂŤ H \ ÂŚ] j Ă´ Ç . • \ VĂź @: StringIndexOutOfBoundsException – StringBuffer insert(int index, String str) • b ‚ 9 Ă?Z : 0 ≤index<length() ĂŒ • Ă– ³‚ Ă?Z : Ă… ĂŒ Ă’# Q ” str` ÂŚÂ ĂąĂ˜ ÂŚÂ? aĂŒ ) o^ Â? ‰_ index 0 Au \  œ š{ Ăş Ă´ 9 Ç . " ÂśA ĂŠ 0 Au s ĂŠ ĂŞ\  e Â? ” H— ¸ÂŽ HĂŤ H HĂş Â? š Âś{ Â? 9 aĂŤ ) H \ + P '\  0 Au • ¸2 ¤s Â&#x; 1 xÂ? l a ) . VĂź @: StringIndexOutOfBoundsException • \ – void setCharAt(int index, char ch) • b ‚ 9 Ă?Z : 0 ≤index<length() ĂŒ • Ă– ³‚ Ă?Z : Ăą ĂŒ  Ă˜ ÂŚÂ? aĂŒ ) o^ Â? ‰_ index 0 Au \  e Â? ” HĂŤ H \ ÂŚĂ… Ă’# Q ” ĂŤ H ch– Ă? Ăľ H . • \ VĂź @: StringIndexOutOfBoundsException – String substring(int start) • b ‚ 9 Ă?Z : 0 ≤start<length() ĂŒ • Ă– ³‚ Ă?Z : start 0 ĂŒ Au Ă‚ Ă’' l ” rĂŤ > H \ = P Q ĂĽ t – Ă?½ ¨$

Â? Ă­ aD ) h String ĂŒ o^ Â? ‰\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . • \ VĂź @: StringIndexOutOfBoundsException – String substring(int start, int end) • b ‚ 9 Ă?Z : 0 ≤start, end<length(), start<end ĂŒ • Ă– ³‚ Ă?Z : start 0 ĂŒ Au Ă‚ Ă’' end-1 t – Ă?½ ¨$

Â? Ă­ aD ) h String ĂŒ o^ Â? ‰\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . • \ VĂź @: StringIndexOutOfBoundsException • Hangman > e ĂĄ ” Ԗ Ă?Ă• ÂŞĂ? ›: s Ăž > e “ ” r( É É ÂŽ Ă“' ‚ Ă— Â˜Ă´ Ăž Ç%

ĂŤ ò HĂŠ –# Ă&#x; Q\ Œ¡ ˜ Ăş ´ Â?Æ Ăş Ă’Â? H> e s ” . 6 x  Â? HĂŠ –# Ă&#x; Q\ ÂŚ ½ ¨$

Ă­ Â? HĂŤ H \ ÂŚ m Æ ” Ă’8 ¤ ÂŁ > á &9, Æ Ă’8 ¤ô ÂŁ ÇÍ H ĂŠ –# Ă&#x; Q\  1 x p Âœ Š € Ă• ÂŞĂŤ H 1 x p ÂœĂ´ Š Ǘ ¸ÂŽ H0 Au \ ÂŚÂ˜ Ă? # ÂŒĂ… Ă’> Â? a ) . s ĂĄ Ԗ Ă?Ă• ÂŞĂ? ›“ Ăž r Hangman, HangmanProgram, wordDB [ É j> h_ 9 tA Ăž Ă› Ÿ– Ă?½ ¨$

Â? Ă­ a ) . Hangman 9 tA Ăž Ă› ÂźÂ? H‰ ÂłF & > e ” ” Â? ' Â&#x; † Ă“` ½ ÂŚ StringBuffer ĂŒ o^ Â? ‰\ ÂŚ: xK Â&#x; Ă„ Âťt 9, 6 x  Ă† Ă’8 ¤ô ÂŁ ÇÍ H \  > e ” ” ' Â? Â&#x; † Ă“` ½ ÂŚĂŒ t q Â’ Ă´ Ç . HangmanProgram 9 tA Ăž Ă› ÂźÂ? H> e ` ” Œ” ' Â? Â&#x; l 0 AĂ´ Ç “ ' ` Â…s Ă› Âź\ ÂŚ] j/ NĂ´ B Ç . wordDB 9 tA Ăž Ă› ÂźÂ? H% 7 Â˜Ă› Ÿà Ă”

{ 9 – Ă?½ ¨$

Â? Ă­ aX ) <s ' Z Â…s Ă› Ÿ \" fe _ ” _ ĂŠ –# Ă&#x; Q\ Œ‚ Ă— ˜ Ăž # ÂŒĂŻ r . Hangman 9 tA Ăž Ă› Âź_ 6 §B ÂŁ j™ èĂ— Âź\ ΢ a$

Ă­ “ ÂŚ, – public boolean guessALetter(char guessChar) • Ă– ³‚ Ă?Z : Ă… ĂŒ Ă’# Q ” guessChar ĂŠ –# Ă&#x; Q\  1 x p Âœ Š Â? Ht ÂŽ # ÂŒ1 x p Âœ Š Â? H0 Au > e ” ” Â? ' Â&#x; † Ă“` ½ ÂŚ tÂ’ q ĂŒ Ă´ Ç . ¸ ¢ô Çp x 1 Âœ Š € true\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚ, 1 x p Âœ Š t ¡ §Ăœ Ăş Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . HangmanProgram 9 tA Ăž Ă› Âź_ main † ĂŠĂƒ < Âş\ ΢ a$

Ă­ r š ¸. 6 x  Â? HĂž j@ /# ÂŒ$  à t ¸ ˜3 Ăş wÂ? l aÆ ) Ă’8 ¤` ÂŁ Œ½ Ă‰Ăƒ + Âş e ” . $

/ í Nô B Ç

Ă„ â Âş\  Â? HY

 > _ Æ Ă’8 ¤Í ÂŁ –\ Ă&#x;  $

/ Ă­ N B % Â? i Ht Ă˜§ ÂŚ Ă´ 4 Ç . 6 x  Â– Ă?Ă‚ Ă’' ĂŤ H \ ÂŚ{ § 9 ~ 4 ĂŽ` Ăƒ ÂŚM : Hangman_ guessALetter\ ÂŚs 6 x  # ÂŒ> e ” ” ' Â? Â&#x; † Ă“` ½ ÂŚĂŒ t q Â’ “ ÂŚ, Ă• ÂŞ Ăľ \ ÂŚÂ˜ Ă?# ÂŒĂŻ r . ĂŤ H _ { § 9 Ăľ 4 B jr t _ Ă˜ Τ Â“ 4 r JOptionPane_ É showInputDialogĂź < showOutputDialog` ÂŚs 6 xĂ´  Ă‡ .

7

Post-Lab • ĂŤ H \ ` P ÂŚ% ƒo ½ ÉM + : String 9 tA Ăž Ă› Ÿ¢ ¸Â? H StringBuffer 9 tA Ăž Ă› Âź\ ÂŚ 6 x½  Ă‰Ăƒ + Âşe ” . Âż Âş9 tA Ăž Ă› Âź\ ÂŚ 6 x½  Ă‰ + M : s & ` h ÂŚ 6 §Â? ÂŁ ĂŻĂ— Âź\ ÂŚ s6 x  # ÂŒq “ §[ " O

ĂŽ r š ¸. String String str2 = str1 =

str1 = "test"; str2; str1; str1 + "s";

StringBuffer bstr1 = new StringBuffer("test"); StringBuffer bstr2; bstr2 = bstr1; bstr1.append("s");

5


c °2005, sangjin@kut.ac.kr

Ä ¬Ë ìÍ æ P ò Laboratory 3. PointList ADT

1

×X Ò Ä ì • C \ ` P ¦s 6 x #o Û ¼à Ô\ ¦¨ ½ ³K & r : . • _ tokenizer\ ¦s 6 x # v Ð× ¼ РÒ' X <s ' \ ¦{ § 9 ~ 4 Î Ã H~ ÓZ ½ ` O ¦z ´_ vô þ Ç . • java.awt J v t \ ¦s 6 x # E e ¦a @` Å ¦: xK / G B ` ¦Õ ªo H~ ÓZ ½ ` O ¦z ´_ vô þ Ç .

2

4 ~ ¿ • o Û ¼à Ô(list) HX <s ' \ ¦ + A& þ Ü h ¼ Ð ao ' ½ ÉM + : 6 x « ѽ ¨ ¸s . + A& þ Ü h ¼ Ð ao ' a ) H ‫כ‬ r' É ‫כ‬ Í ¹ è ¦] \ jü @ ¦ H ¸¿ º ' ‫כ‬ ¹ è\ ¦ t ¦e Ü ¼9, t } ‫כ‬ ¹ è\ ¦] jü @ ¦ H ¸¿ ºÊ ê5 q‫כ‬ Å ¹ è\ ¦ t ¦e H ` ‫כ‬ ¦´ ô ú Ç . s z ´_ v\ þ " f H 2 " ¶ý é a³ ð (x, y)\ ¦¶ " é è Ð t Ho Û ¼à Ô\ ¦½ ¨ ³K & r : . s o Û ¼à Ô\ ¦ PointList 9, Õ ªA i 6 x6 £ x\ " f´ §s ú 6 x a ) . • s ü <° ú ro É ¼ Ûà Ô H ¸f ý a³ ð&

ñ Ðë Ä ß »t ½ Éà + ºe Ü ¼Ù ¼ Ð# 6 3 x « ѽ ¨ ¸ m .

3

PointList ADT • ½ ¨$

‫כ‬ í ¹ è: x ý a³ ðü <yý a³ ð\ ¦ ? / H&

à ñ º s © . s z ´_ v\ þ " f H java.awt J v t \ e H Point 9 tA þ Û ¼ ¦s \ 6 x # y ý a³ ð\ ¦ p · . • ½ ¨ ¸: ý a³ ð[ tÉ þ r C \ ` P ¦s 6 x # ½ ¨ ³ & a ) + Ao þ Û ¼à Ô\ Ä »t a ) . ¢ ¸ô Ç& " f\ ¦ Ä »t # Ò o ¦e H ³F & 0 Au \ ¦ p · . – 9 { ì Í& ø Ü h ¼ Ðo ¼ Ûà Ô « ѽ ¨ ¸\ ¦½ ¨ ³½ & ÉM + :¶ { ú õ 9 ] j\ ¹ §f ¡ s H& " fü <° ú r& É

ñ Ð\ ¦Ä »t t · § ú H . • í ß – l rÒ : t$ q

í : PointList() • b 9 ÐZ : \ Ì 6 O §. £ • Ö ³ ÐZ : setup B Ì j è× ¼\ ¦ ñØ ¦ # DEF_MAX_LIST_SIZE ë ß u_ p ý a³ ð\ ¦$ ½ © Éà + ºe H Û o ¼à Ô\ ¦ë ß H . – Ò t$ q

í : PointList(int maxNumber) b 9 ÐZ : maxNumber> 0 Ì • • Ö ³ ÐZ : setup B Ì j è× ¼\ ¦ ñØ ¦ # maxNumber ë ß p u_ ý a³ ð\ ¦$ ½ © Éà + ºe H o Û ¼à Ô\ ¦ë ß H . s M : ¸| s Ø æ7 ¤÷ á &t · §Ü ú ¼ DEF_MAX_LIST_SIZE ë ß u_ p ý a³ ð\ ¦$ ½ © Éà + ºe H oÛ ¼à Ô\ ¦ë ß H . – Ò t$ q

í ¸¹ §s ¡ : void setup(int maxNumber) b 9 ÐZ : maxNumber> 0, s Ì B j è× ¼ HÒ t$ q

í ë ß 6 x Ù ¼ Ð private B j è× ¼ Ðë ß H . • • Ö ³ ÐZ : maxNumber ë Ì ß u_ p ý a³ ð\ ¦$ ½ © Éà + ºe H o Û ¼à Ô\ ¦ë ß H . a³ ðÆ Ò : void append(Point newPoint) – ý • b 9 ÐZ : isFull()==false, newPoint!=null Ì Ö ³ ÐZ : Ò Ì Å# Q ý a³ ð\ ¦o Û ¼à Ô_ = Q\ å Æ Ò ô Ç . & " f HÆ Ò aý ) a³ ð\ ¦ o v ¸2 ¤s 1 xô l Ç . • – ý a³ ð\ | P Ð: Point getCursor() à b 9 ÐZ : isEmpty()==false Ì • 1


• Ă– ³‚ Ă?Z : ĂŒ &" f ‰ ÂłF & o v Â? HĂ˝ aÂł Ă°\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – void clear() • b ‚ 9 Ă?Z : \ ĂŒ 6 O § ÂŁ • Ă– ³‚ Ă?Z : o ĂŒ Ă› Ÿà Ă”\  e Â? ” H— ¸ÂŽ HĂ˝ aÂł Ă°\ ÂŚ] j Ă´ Ç . o Ă› Ÿà Ă”_ Ă&#x; Âźl &

˜ Ăą Ă?Â? H 0s á &# Q 9, & " fÂ? H -1– Ă?[ & O

K Ăą Ă´ Ç . – boolean isEmpty() • b ‚ 9 Ă?Z : \ ĂŒ 6 O § ÂŁ Ă– ³‚ Ă?Z : ĂŒ oĂ› Ÿà Ă” q # Qe Ăœ ” Ÿ€ true\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚĂ• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . • – boolean isFull() • b ‚ 9 Ă?Z : \ ĂŒ 6 O § ÂŁ • Ă– ³‚ Ă?Z : ĂŒ oĂ› Ÿà Ă” T ` q e Ăœ ” Ÿ€ true\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚĂ• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . ‰ ÂłF & o Ă› Ÿà Ă”_ Âźl Ă&#x; Ăź <o Ă› Ÿà Ă”\ Œ½ ¨Â‰ ³ô & ÇC \ _ P 6 x|  Ă“` ž ÂŚq “ § # ÂŒo Ă› Ÿà Ă” T ` q e Â? ” Ht ÂŽ Ă´ Ç . – boolean gotoBeginning() b ‚ 9 Ă?Z : \ ĂŒ 6 O § ÂŁ • • Ă– ³‚ Ă?Z : o ĂŒ Ă› Ÿà Ă” q # Qe Ăœ ” Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚ, Ă• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ & " f\ ÂŚo Ă› Ÿà Ă”_ % ƒ6 §Ăœ ÂŁ Ÿ– Ă?s 1 x l “ ÂŚ true\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – boolean gotoEnd() • b ‚ 9 Ă?Z : \ ĂŒ 6 O § ÂŁ • Ă– ³‚ Ă?Z : o ĂŒ Ă› Ÿà Ă” q # Qe Ăœ ” Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚ, Ă• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ & " f\ ÂŚo Ă› Ÿà Ă”_ = QĂœ ĂĽ Ÿ– Ă?s 1 x l ÂŚ true\ “ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – boolean gotoNext() • b ‚ 9 Ă?Z : \ ĂŒ 6 O § ÂŁ • Ă– ³‚ Ă?Z : & ĂŒ " f o Ă› Ÿà Ă”_ = Q\ ĂĽ  e Ăœ ” Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚ, Ă• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ & " f\ ÂŚĂ• ÂŞ 6 §ý ÂŁ aÂł Ă°\ ÂŚ o v • ¸2 ¤ Â&#x; s1 x l “ ÂŚ true\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – boolean gotoPrior() • b ‚ 9 Ă?Z : \ ĂŒ 6 O § ÂŁ Ă– ³‚ Ă?Z : & ĂŒ " f o Ă› Ÿà Ă”_ % ƒ6 §\ ÂŁ  e ” o Âź Ûà Ô ^ ‰ q # Qe Ăœ ” Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚ, Ă• ÂŞX t O • §Ăœ Ăş ¡ Ÿ€ & " f\ ÂŚ – Ă?„ Ă˝ aÂł Ă°\ ÂŚ o v • ¸2 ¤s Â&#x; 1 x l “ ÂŚ true\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – void showStructure() • b ‚ 9 Ă?Z : \ ĂŒ 6 O § ÂŁ • Ă– ³‚ Ă?Z : o ĂŒ Ă› Ÿà Ă”\  e Â? ” H— ¸ÂŽ HĂ˝ aÂł Ă°\ ÂŚĂ˜ Τ Ă´ 4 Ç . ĂŤ –€ Ă&#x; •o Â? Ă› Ÿà Ă” q # Qe Ăœ ” Ÿ€ “List is empty.â€?\ ÂŚĂ˜ ÂŚ Ă´ 4 § Ç . sB j™ èĂ— ÂźÂ? Hn ! Q^

` ç ÂŚ3 q& l Ăœ h Ÿ– Ă?ĂŤ – Ă&#x; 6 xÂ?  a ) .

4

PreLab • 6 § ÂŁ ÂŚ `s 6 x  ÂŒ # PointList ADT\ ΢ a$

Ă­ . class PointList{ public static final int DEF_MAX_LIST_SIZE = 10; // Data members; private int size; private int cursor; private Point[] ptList; // Constructor public PointList() {} public PointList(int maxNumber){} private void setup(int maxNumber){} // List Manipulation Operator public void append(Point newPoint){} public Point getCursor(){} public void clear(){} // List Status Operator 2


public boolean isEmpty(){ return (size == 0); } public boolean isFull(){ return (size >= ptList.length); } // List iteration Operator public boolean gotoBeginning(){} public boolean gotoEnd(){} public boolean gotoNext(){} public boolean gotoPrior(){} public void showStructure(){ if(size == 0) System.out.println("List is empty."); else{ System.out.print("size = " + size + ", cursor = " + cursor); for(int i=0; i<ptList.length; i++){ if(i%4 == 0) System.out.println(); System.out.print(i + ": "); if(j < size) System.out.print("("+ptList[i].x+","+ptList[i].y+")\t"); else System.out.print("(-,-)\t"); } // end for System.out.println( ); } // end else } // end showStructure() } // end PointList class • ½ ¨Â‰ Âłr & Ă„ Âť_ † Ă“ ½ – „ › ¸| \  0 AC á &€ & X h ]Ă´ ǚ ¸Ă€ Ă“B jr t \ Œ– H_ B t\ "  Ă˜ Τ Ă´ 4 Ç . – cursorÂ? H −1– Ă?Âœ Ă­l o Ç Ă´ . • ¢$ a

` Ă­ ÂŚ € ConstructPointList 9 tA Ăž Ă› Âź\ ÂŚs 6 x  # ÂŒ PointList\ Œ½ ¨ ¤K ÂĄ ‘ r : . s 9 tA Ăž Ă› ÂźÂ? Hy Âœ_ Š < ĂŒ ` Â…s t \  " f ĂŽ r~ ĂŽ` Ăƒ ÂŚÂş Ăƒe ” . • TestPointList 9 tA Ăž Ă› Âź\ ÂŚs 6 x  # ÂŒ PointList\ ÂŚ] j@ /– Ă?½ ¨Â‰ Âł & % Â? i Ht 6 § ÂŁ ÂŚ ` ÂŽ # ÂŒS ‰“ X Ă´ Ç . s 9 tA Ăž Ă› Ÿ• ¸y Âœ_ Š < ĂŒ` Â…s t  \" f ĂŽ r~ ĂŽ` Ăƒ ÂŚĂƒ Âşe ” . – Ăž j@ /Ă&#x; Âźl t > 5 qĂ˝ Ă… aÂł Ă°\ ή Ă’ K ‘ r : . – isFull B j™ èĂ— Âź\ ÂŚS ‰“ X Ă´ Ç . – gotoBeginning B j™ èĂ— Âź\ ÂŚS ‰“ X Ă´ Ç . – gotoNext B j™ èĂ— Âź\ ÂŚ s6 x  # ÂŒo Ă› Ÿà Ă”_ = Q ĂĽ t s l x 1Ă´ Ç . s 1 x l € " f‰ ÂłF & & " f_ ° ‍`כ‏ Ăş ÂŚĂ˜ Τ Ă´ 4 Ç . – gotoPrior B j™ èĂ— Âź\ ÂŚs 6 x  # ÂŒo Ă› Ÿà Ă”_ % ƒ6 §Ăœ ÂŁ Ÿ– Ă?s 1 xĂ´ l Ç . – T `Ă° q Ă?o ø Ă› Ÿà Ă”\ ÂŚ clearĂ´ Ç . – isEmpty B j™ èĂ— Âź\ ÂŚS ‰ X “ Ă´ Ç . – Ă˝ aÂł Ă°\ ÂŚY

> > h r Æ Ò K ‘ r : .

5

In-Lab • p ¢ a$

Â? Ă­ a DrawCurv 9 ) tA Ăž Ă› Âź\ ÂŚy Âœ_ Š < ĂŒ` Â…s t \  " f ĂŽ r~ ĂŽ Ăƒ { 9 § ~ 4 Γ Ăƒ r& É [ h t` Ăž ÂŚ Y V– Ă?s # QĂ… Ă’Â? H‚ ` ÂŚĂ• ÂŞo • ¸2 ¤ DrawCurv 9 Â&#x; tA Ăž Ă› Âź_ paint B j™ èĂ— Âź\ ΢ a$

Ă­ # ÂŒ . – Graphics2D 9 tA Ăž Ă› Âź_ drawLine B j™ èĂ— ÂźÂ? HĂ´ Ç& \ h  Â? r& É h t _ ‚ ` ÂŚĂ• ÂŞ 9ĂŻ r . \ V) g.drawLine(10, 10, 30, 20); (10, 10)\  " f (30, 20) t _ ‚ ` ÂŚĂ• ÂŞ 9ĂŻ r . ˜ Âś ݕ ¸Ă„ º \" fĂ˝ aÂł Ă°Â? H¢ aA , ¤ ĂĄ ÂœĂŠ Š –s Ă&#x; (0,0)s . Ă• ÂŞa >1‚ Ă‹ Ă?› Ăƒ ¸. 3


(0, 0)

(10, 0)

(20, 0)

(30, 0)

(10, 10)

(0, 10)

(0, 20)

(30, 20)

(0, 30)

<Ă• ÂŞa > 1> ˜ Ă‹ ϥ Ăť ¸Ă„ ºý aÂł Ă°

6

Post-Lab • 6 §Âƒ ÂŁ Ă­ –` Ă&#x; ÂŚ PointList\  Ă† Ă’ Ă´ Ç . – void insertBeginning(Point newPoint) • b ‚ 9 Ă?Z : isFull()==false, newPoint!=null ĂŒ • Ă– ³‚ Ă?Z : D ĂŒ hĂ˝ aÂł Ă°\ ÂŚo Ă› Ÿà Ă”_ p% Âą ƒ6 §\ ÂŁ  Ă† Ă’ Ă´ Ç . & " fÂ? HÆ Ă’ Ă´ ÇD hĂ˝ aÂł Ă°\ ÂŚ o v • ¸2 ¤ Â&#x;

Ă´ â Ç . – void delete(Point aPoint) • b ‚ 9 Ă?Z : isEmpty()==false, aPoint!=null ĂŒ • Ă– ³‚ Ă?Z : ĂŒ •] ÂŒ j½ Éý + aÂł Ă° o Ă› Ÿà Ă”\  Â” rF > € Ă• ÂŞĂ˝ aÂł Ă°\ ÂŚ •] ÂŒ jĂ´ Ç . s M :s Ă˝ aÂł Ă°+ '\  e Â? ” HĂ˝ aÂł Ă°[ t Ăž r É “ m ¢ ” aA , ¤Ăœ ĂĄ Ÿ– Ă?s 1 xK l 9, & " fÂ? H •] ÂŒ jĂ´ Çý aÂł Ă° 6 §\ ÂŁ  0 Au • ¸2 ¤ô Â&#x; Ç . ĂŤ –€ Ă&#x; • Â? p Âą t } • ÂŒ aÂł Ă˝ Ă°\ ÂŚ •] ÂŒ j % Ăœ i Ÿ€ & " fÂ? H' Ă˝ Ă? aÂł Ă°\ ÂŚ o & 9, •] ÂŒ jM :ĂŤ H\  Â‘ o Ă› Ÿà Ă” á &€ & " fÂ? H -1 â€Ť×›â€ŹĂœ Ăş ° Ÿ– Ă?[ & O

K Ăą Ă´ Ç . s ƒ Ă­ –“ Ă&#x; rƒ É ] j  Âœq Š ´ òĂ– ÂŚ& h “ ?

4


c °2005, sangjin@kut.ac.kr

„ ę –‰ ÂŹĂ‹ ĂŹĂ? ̛ P ò Laboratory 4. List ADT

1

Â? Ă—X Ă’ Ă„ ĂŹ • z ´_ v 3\ Ăž  " fÂ? HĂ˝ aÂł Ă°&

˜ Ăą Ă?ĂŤ –$ Ă&#x;  Âœ½ Š Ă‰Ăƒ + Âşe Â? ” H PointList\ ÂŚ9 tA Ăž Ă› Âź\ Œ½ ¨Â‰ Âł & % i . s z ´_ v\ Ăž  " fÂ? H € ÂœĂ´ ÂŞ Ç&

Ăą ˜ Ă?\ ÂŚ$  Âœ½ Š Ă‰Ăƒ + Âşe Â? ” H# 6 3 xo  Ă› Ÿà Ă” ADT\ Œ½ ¨Â‰ ÂłK & ‘ r : . – s z ´_ v\ Ăž  " f½ ¨Â‰ Âł & “ ÂŚ Â? H# 6 3 xo  Ă› Ÿà Ă” ADTÂ? H´ _ z v 3\ Ăž  " f½ ¨Â‰ ³ô & Ç PointListĂź < Ă° Ă? t ø – Ă?C \ P ÂŚs ` 6  x # ÂŒo Ă› Ÿà Ă”\ Œ½ ¨Â‰ ³ô & Ç . – PointListÂ? Ho Ă› Ÿà ԛ ¸ Â•Ăľ ÂŒ › aÂş ' # ÂŒ append B j™ èĂ— ŸÍ –] Ă&#x; j/ N B % t i ĂŤ –s Ă&#x; z ´_ v\ Ăž  " fÂ? H˜ Ă?: x Â&#x; ÂŤ Ă‘½ ¨ › ¸\  " f] j/ N B Â? HÂś š{ Ăş 9 , •] ÂŒ j, “ §^ ‰, Ă’ ÂŽ oƒ Â? Ă­ –1 Ă&#x; x` p Œ½ ¨Â‰ ÂłK & ‘ r : . • “ ' ` Â…s Ă› Âź\ Œ ¸6 Ă– xK  Â‘ r : .

2

4 ~ Âż • o Ă› Ÿà Ă”Â? H°  Â“ Ăş r É { _ 9 ‍כ‏ šÂ™ è[ t` Ăž ÂŚ" f– Ă?‚ + A› Ăž a> ' \ ÂŚ t • ¸Â&#x; ¤ 2Ă„ Âťt Â? H ÂŤ Ă‘½ ¨Â› ¸s . • z ´_ v 3\ Ăž  " f% ƒ! # 3 Q‹ : " ¤& ÂŁ

Ăą { _ 9 ‍כ‏ šÂ™ è[ t` Ăž ÂŚ$  Âœ Š Â? Ho Âź Ûà Ô\ ÂŚy •y ÂŒ •Í ÂŒ –[ Ă&#x; t# Ăž Q 6 x½  Ă‰Ăƒ + Âşe t ” ĂŤ –s Ă&#x; “ ‍כ‏ r Ă‰ v \ . \  " fÂ? H— ¸ÂŽ HĂž t 9A Ă› Âź_ › ¸ Âœs Š á &Â? H Object 9 tA Ăž Ă› Âź\ ÂŚs 6 x  # ÂŒ# 6 3 xo  Ă› Ÿà Ă”\ ÂŚĂŤ –[ Ă&#x; tĂƒ Ăž Âşe ” . t ĂŤ – Object 9 Ă&#x; tA Ăž Ă› Âź\ ÂŚs 6 x  Â€ Âś " ĂŠr { 9 “ rs É ½ ¨Â› ¸\  $  Âœ½ Š Ă‰Ăƒ + Âş\ Â? O HĂŤ H] j& s h e ” . • • \  " f intĂź <°  Â“ Ăş rÂś É " ĂŠ { 9 “ r‚ É Ă?› Ăƒ ¸ { 9 s m Ă™ Ÿ– Ă? Object C \ \ P  f ] ” @ X /{ 9 ½ Ă‰Ăƒ + Âş\ O . @ / Â’ s ĂŤ H] j\ ÂŚ K ½ Ă‰Ăƒ + Âşe • ” ¸2 ¤ Â&#x; Â? Hr Ă› Âź% 7 › s Ăš Ă” Qo : xK Â&#x; — ¸ÂŽ HĂŠ "r Âś { \ 9  @ /Ă´ Ç wrapper 9 tA Ăž Ă› Âź\ ÂŚ] j/ N B “ ÂŚe ” . Wrapper Class Boolean Byte Character Double Float Integer Long Short

Ă’$ t q

í : " œ Ê { → Wrapper 9 Boolean(boolean value) Byte(byte value) Character(char value) Double(double value) Float(float value) Integer(int value) Long(long value) Short(short value)

B™ j èĂ— Âź: Wrapper → Âś " ĂŠ { 9 boolean booleanValue() byte byteValue() char charValue() double double doubleValue() float floatValue() int intValue() long longValue() short shortValue()

\ V) &

Ăƒ Ăą Âş\ ÂŚ wrapper ĂŒ o^ Â? ‰– Ă? Ă‹ ¨Â“ ÂŚ r wrapper ĂŒ o^ Â? ‰\ ÂŚ&

Ăƒ Ăą º– Ă? Ă‹ ¨Â? H~ Ă“Z ½ O int i = 77; int j; Integer a = new Integer(i); j = a.intValue();

3

List ADT ¨$

‍כ‏ Ă­ šÂ™ è: Object { _ 9 ĂŒ o^ Â? ‰[ t` Ăž ÂŚ$  Âœ½ Š Ă‰Ăƒ + Âşe Â? ” Ho Ă› ŸÔ Ă , o Ă› Ÿà Ă”\  Â‰ ÂłF & $  Âœá Š &# Qe Â? ” H‍כ‏ šÂ™ è_ > hĂƒ Âş, o Ă› Âź • ½ Ă Ă”\ ÂŚ] H X ½ ÉM + : 6 x  Â? H &" f • ½ ¨Â› ¸: ‚ + AĂ­ Ăž H" f\ ÂŚ t 9, ÂŒ • y‍כ‏ šÂ™ è_ Ă­ H" fÂ? HÂś š{ Ăş Â? 9 ar ) ç –þ Ă&#x; 0 Au \  _ K &

Â? Ăą a ) . y •‍כ‏ ÂŒ šÂ™ è_ ] H X “ r& É " f ÂŚs \ 6 xĂ´  Ă‡ . & " Ă? M h⠍ç Ăƒ j # aĂ‘ Ă? Ă? Âż M Ă‹ R Ă Â&#x; ¡V  g C ” §Ă? / M Ă—( ‘ Ă— ‘ ˜ +Âł Àš ÂżÂ&#x; ¡ h Ă­ > . 1


– C \ ` P ÂŚs 6 x  # ÂŒ½ ¨Â‰ Âł & Ă™ Ÿ– Ă?‍כ‏ šÂ™ è_ > hĂƒ ÂşÂ? H 0Ăœ Ÿ– Ă?Âœ Ă­l oK 9, & " fÂ? H -1– Ă?Âœ Ă­l o Ç Ă´ . • ƒ Ă­ – Ă&#x; – l ‘ rĂ’ : t$ q

Ă­ : List() • Ă– ³‚ Ă?Z : 6 ĂŒ x|  Ă“s ž DEF_LIST_CAPACITY“ ‘ o Ă› Ÿà Ă”\ ÂŚĂ’ t$ q

Ă´ Ă­ Ç . o Ă› Ÿà Ă”_ Ă’ t$ q

Â? Ă­ H setup() B j èĂ— ™ Âź\ ÂŚs 6 xĂ´  Ă‡ . – Ă’ t$ q

Ă­ : List(int capacity) • b ‚ 9 Ă?Z : capacity>0 ĂŒ • Ă– ³‚ Ă?Z : capacity>0s ĂŒ € 6 x|  Ă“s ž capacity“ ‘ o Ă› Ÿà Ă”\ ÂŚĂ’ t$ q

Ă­ “ ÂŚ, Ă• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ 6 x|  Ă“s ž DEF_LIST_CAPACITY“ ‘ o Ă› Ÿà Ă”\ ÂŚĂ’ t$ q

Ă´ Ă­ Ç . o Ă› Ÿà Ă”_ Ă’ t$ q

Â? Ă­ H setup() B j™ èĂ— Âź\ ÂŚs 6 xĂ´  Ă‡ . – Ă’ t$ q

Ă­ • ¸š §s ÂĄ : void setup(int capacity) • sB j™ èĂ— ÂźÂ? HĂ’ t$ q

Ă­ ĂŤ – Ă&#x; 6 x  Ă™ Ÿ– Ă? private B j™ èĂ— Ÿ– Ă?ĂŤ –Ž Ă&#x; H . • 9 b‚ Ă?Z : capacity>0, ĂŒ Ă– ÂłĂ? ‚Z :  ĂŒ x 6| Ă“s ž capacity“ ‘ o Ă› Ÿà Ă”\ ÂŚĂ’ t$ q

Ă´ Ă­ Ç . • – void insert(Object newElement) • b ‚ 9 Ă?Z : newElement!=null, isFull()==false ĂŒ Ă– ³‚ Ă?Z : & ĂŒ " f o v “ ÂŚe Â? ” H‍כ‏ šÂ™ è 6 §\ ÂŁ  Ă… Ă’# Q” D h‍כ‏ šÂ™ è\ ÂŚÂś š{ Ăş 9 Ă´ Ç . & " fÂ? HÂś š{ Ăş 9 Â? a‍כ‏ ) šÂ™ è\ ÂŚ • o v • ¸2 ¤s Â&#x; 1 xĂ´ l Ç . & " f o Ă› Ÿà Ô× Ìç –\ Ă&#x;  e Ăœ ” Ÿ€ & " f0 Au s ĂŠ ĂŞ\  e Â? ” H‍כ‏ šÂ™ èÂ? H Y V– Ă? ¸ ” m šÂ? rA É ¤Ăœ ĂĄ Ÿ– Ă?s 1 x l “ ÂŚD h‍כ‏ šÂ™ è\ ÂŚÂś š{ Ăş Ă´ 9 Ç . – void remove() b ‚ 9 Ă?Z : isEmpty()==false ĂŒ • • Ă– ³‚ Ă?Z : & ĂŒ " f o v “ ÂŚe Â? ” H‍כ‏ šÂ™ è\ ÂŚ] j Ă´ Ç . & " f o Ă› Ÿà Ô× Ìç –\ Ă&#x;  e Ăœ ” Ÿ€ & " f0 Au s ĂŠ ĂŞ  e \ Â? ” H‍כ‏ šÂ™ èÂ? H Y V– Ă? m ¢ ” aA , ¤Ăœ ĂĄ Ÿ– Ă?s 1 xĂ´ l Ç . & " f = Q\ ĂĽ  e Â? ” H

Ă„ â Âş\  Â? H& " f\ ÂŚ% ƒ6 §Ăœ ÂŁ Ÿ– Ă? 1 s x l “ ÂŚ, Ă• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ & " fÂ? H •] ÂŒ jĂ´ Ç‍כ‏ šÂ™ è_ 6 §â€Ť×›â€Ź ÂŁ šÂ™ è\ ÂŚ o v • ¸2 ¤s Â&#x; 1 xĂ´ l Ç . ‰ ÂłF & ‍כ‏ šÂ™ è Âľ Ăš\ 1  \ Â? O H

Ă„ â Âş\  Â•] ÂŒ j s Ă€ Ă’# Qt € & " f_ ° ‍“כ‏ Ăş r −1s É á &# Q Ă´ Ç . – void replace(Object newElement) • b ‚ 9 Ă?Z : newElement!=null, isEmpty()==false ĂŒ • Ă– ³‚ Ă?Z : ĂŒ &" f o v “ ÂŚe Â? ” H‍כ‏ šÂ™ è\ ÂŚD h‍כ‏ šÂ™ è– Ă? Ăľ H . & " f_ 0 Au Â? H t ¡ §Â? Ăş H . – Object getCursor() • b ‚ 9 Ă?Z : isEmpty()==false ĂŒ • Ă– ³‚ Ă?Z : o ĂŒ Ă› Ÿà Ă” q # Qe Â? ” H

Ă„ â Âş\  Â? H null` ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚ, Ă• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ & " f ‰ ÂłF & o v Â? H‍כ‏ š è\ ™ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – int size() • Ă– ³‚ Ă?Z : ĂŒ oĂ› Ÿà Ă”\  e Â? ” H‍כ‏ šÂ™ è_ > hĂƒ Âş\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – void clear() Ă– ³‚ Ă?Z : ĂŒ oĂ› Ÿà Ă”\  e Â? ” H— ¸ÂŽ H‍כ‏ šÂ™ è\ ÂŚ] j Ă´ Ç . • – boolean isEmpty() • Ă– ³‚ Ă?Z : ĂŒ oĂ› Ÿà Ă” q # Qe Ăœ ” Ÿ€ true\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚĂ• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – boolean isFull() • Ă– ³‚ Ă?Z : ĂŒ oĂ› Ÿà Ă” T ` q e Ăœ ” Ÿ€ true\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚĂ• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – boolean gotoBeginning() b ‚ 9 Ă?Z : ĂŒ oĂ› Ÿà Ă” q # Qe t ” ¡ § Ăş Ă´ Ç . • • Ă– ³‚ Ă?Z : o ĂŒ Ă› Ÿà Ă” q # Qe Ăœ ” Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚ, Ă• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ & " f\ ÂŚo Ă› Ÿà Ă”_ % ƒ6 §Ăœ ÂŁ Ÿ– Ă?s 1 x l “ ÂŚ true\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – boolean gotoEnd() • b ‚ 9 Ă?Z : ĂŒ oĂ› Ÿà Ă” q # Qe t ” ¡ § Ăş Ă´ Ç . • Ă– ³‚ Ă?Z : o ĂŒ Ă› Ÿà Ă” q # Qe Ăœ ” Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚ, Ă• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ & " f\ ÂŚo Ă› Ÿà Ă”_ = QĂœ ĂĽ Ÿ– Ă?s 1 x l ÂŚ true\ “ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – boolean gotoNext() 2


• b ‚ 9 Ă?Z : ĂŒ oĂ› Ÿà Ă” q # Qe t ” ¡ § Ăş Ă´ Ç . • Ă– ³‚ Ă?Z : & ĂŒ " f o Ă› Ÿà Ă”_ = Q\ ĂĽ  e Ăœ ” Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚ, Ă• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ & " f\ ÂŚĂ• ÂŞ 6 §â€Ť×›â€Ź ÂŁ šÂ™ è\ ÂŚ o v • ¸2 ¤ Â&#x; s1 x l “ ÂŚ true\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – boolean gotoPrior() • b ‚ 9 Ă?Z : ĂŒ oĂ› Ÿà Ă” q # Qe t ” ¡ § Ăş Ă´ Ç . • Ă– ³‚ Ă?Z : & ĂŒ " f o Ă› Ÿà Ă”_ % ƒ6 §\ ÂŁ  e Ăœ ” Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚ, Ă• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ & " f\ ÂŚs „ ‍כ‏ šÂ™ è\ ÂŚ o v• ¸2 ¤ Â&#x; s1 x l “ ÂŚ true\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – void showStructure() • b ‚ 9 Ă?Z : \ ĂŒ 6 O § ÂŁ • Ă– ³‚ Ă?Z : o ĂŒ Ă› Ÿà Ă”\  e Â? ” H— ¸ÂŽ HĂŒ o^ Â? ‰\ ÂŚĂ˜ Τ Ă´ 4 Ç . ĂŤ –€ Ă&#x; •o Â? Ă› Ÿà Ă” q # Qe Ăœ ” Ÿ€ “List is empty.â€?\ ÂŚĂ˜ ÂŚ Ă´ 4 § Ç . sB j™ èĂ— ÂźÂ? Hn ! Q^

` ç ÂŚ3 q& l Ăœ h Ÿ– Ă?ĂŤ – Ă&#x; 6 xÂ?  a ) .

4

PreLab • List ADTÂ? Hz ´_ v 3\ Ăž  " f½ ¨Â‰ ³ô & Ç PointList ADTĂź <°  Â“ Ăş r7 É xĂ€ ĂĄ Ă“_ B j™ èĂ— Âź\ Ϋ §s Ăş ] j/ NĂ´ B Ç . \  " fÂ? H9 tA Ăž Ă› Âź [ ts Ăž / N: B xĂœ Â&#x; Ÿ– Ă?] j/ NK B Â? HB j™ èĂ— Âź[ t` Ăž ÂŚ interface– Ă?&

_ Ăą # ÂŒ 6 xĂ´  Ă‡ . s \ ÂŚ: xK Â&#x; 9 tA Ăž Ă› Âź\ ÂŚ 6 x  Â? H 6 x  \  > # Q‹ ĂĄ " x 7Ă€ Ă“_ B j™ èĂ— Âź e ` ” ÂŚ “ ‍כ‏ t S ‰’ X ` ÂŚĂ— ÂŚĂƒ Âşe > ” 9, _ 9 tA Ăž Ă› Âź\  @ /Ă´ Çs K \ ÂŚ „ Ă“Ăœ ½ Âź – Ă?~ > 1 Â? r9 É tA Ăž Ă› Âź\ ÂŚ 6 x½  Ă‰Ăƒ + Âşe ” . • interfaceÂ? H9 tA Ăž Ă› Ÿß <Âť Ă„ > &

_ Ăą t ĂŤ – Ă&#x; 6 §þ ÂŁ °  Â“ Ăş r É s & s h e ” . – interfaceÂ? HĂ? r! l Q Ăƒ Âş\ ÂŚ | Ăƒ 9 Âş\ O . Ă• ÂŞ Q ÂœĂƒ Š ÂşÂ? H&

_ Ăą ½ Ă‰Ăƒ + Âşe ” . “ ' ` Â…s Ă› Âź\  &

_ Ăą Â? a ) ÂœĂƒ Š ÂşÂ? H 1 xĂœ l Ÿ– Ă? public static finals . " f ÂœĂƒ Š Âş\ Œ‚ ƒ ½ ÉM + :s ` ‍כ‏ ÂŚĂ’ t| q ĂŒ Ă„ # Υ ¸Â? a ) . – B j™ èĂ— Âź_ ? /6 x`  Œ&

_ Ăą ½ Ă‰Ăƒ + Âş\ O . 7 ¤, — ÂŁ ¸ÂŽ HB j™ èĂ— ÂźÂ? H abstract B j™ èĂ— Âźs . Ă• ÂŞ Q abstract v 0 >Ă— Âź\ ÂŚ 6 x  t Â? H¡ §Â? Ăş H . – B j™ èĂ— ÂźÂ? H 1 xĂœ l Ÿ– Ă? public B j™ èĂ— Âźs . " f‚ ƒ ½ ÉM + : public` ÂŚ 6 x  t ¡ § Ăş • ¸Â? a ) . – interface_ “ Ă› Ÿ‡ Ă› Âź\ ÂŚĂ’ t$ q

½ Ă­ Ă‰Ăƒ + Âş\ O . • List interface public interface List{ // List Manipulation void insert(Object newElement); void remove(); void replace(Object newElement); void clear(); // List Status int size(); boolean isEmpty(); boolean isFull(); // Cursor Manipulation boolean gotoBeginning(); boolean gotoEnd(); boolean gotoNext(); boolean gotoPrior(); // Element Retrieve Object getCursor(); // Debugging Purpose void showStructure(); } Œ½ ¨Â‰ Âł & Â? H ArrayList 9 tA Ăž Ă› Âź\ ΢ a$

Ă­ r š ¸. • List interface\ public class ArrayList implements List{ int DEF_LIST_CAPACITY = 10; private int size = 0; 3


private int cursor = -1; private Object[] element; ... } • TestListArray\ ¦s 6 x # ½ ¨ ³ô & Ç ArrayList\ ¦ ô Ç . – _ Û ¼à Ô~ ÓZ ½ O 7 xÀ á Ó = Q\ å ¶ { ú 9 % 6 §Â £ Ò' Y V Ð~ Óë ½ H = Q\ å " fì Í@ ø / Ð~ Óë ½ H & " f0 Au \ e H‫כ‬ ¹ è ] j æç × \ ß ¶ { ú 9 = Q\ å e H‫כ‬ ¹ è ] j % 6 §\ £ e H‫כ‬ ¹ è ] j ‫כ‬ ¹ èØ ¦§ 4 ‫כ‬ ¹ è §^ o Û ¼à Ô ^ ] j

5

"§

î

î +a +b +c +d <NN >PP +e +f +f >@ =g c

l@ /÷ & H õ abcd abcd abcd acd aceffd aceff ceff c geff List is empty

q ¦

In-Lab 1 • o Û ¼à Ô? /\ # Q ¹ " ‫ כ‬ è_ : ¤& £

0 ñ Au \ ¦

½ â É + ‫כ‬ 9 ¹ 7 x7 á xe á ` ¦Ã ºe . s \ ¦0 Aô Ç 6 §B £ j è× ¼\ ¦½ ¨ ³ & . – void moveToNth(int n) • b 9 ÐZ : 0 ≤n<size Ì • Ö ³ ÐZ : & Ì " f 0 Au ô Ç‫כ‬ ¹ è\ ¦] j ¦s ‫כ‬ ¹ è\ ¦o Û ¼à Ô_ n P :‫כ‬ ¹ è Ðs 1 xô l Ç . & " f H‫כ‬ ¹ è\ ¦` | A 0u Ðs 1 xô l Ç . \ V) o Û ¼à Ô_ I © 6 §õ £ ° ú ¦ . 0 [a] 1 [b] 2 [c] 3 [d] 4 [e] @5 [f] 6 [g] 7 [h] cursor 5\ e ` ¦M : moveToNth(2)\ ¦ o Û ¼à Ô_ I © H 6 §õ £ ° ú . 0 [a] 1 [b] @2 [f] 3 [c] 4 [d] 5 [e] 6 [g] 7 [h]

6

In-Lab 2 • o Û ¼à Ô? /\ # Q £ " ¤ :&

‫כ‬ ñ ¹ è $ ÷ © &# Qe H0 Au \ ¦¹ Ô` 1 ¦ ‫כ‬ 9 ¹ 7 x7 á xe á ` ¦Ã ºe . s \ ¦0 Aô Ç 6 §B £ j è × ¼\ ¦½ ¨ ³ & . – boolean find(Object searchElement) b 9 ÐZ : isEmpty()==false Ì • • Ö ³ ÐZ : & Ì " f 0 Au ô Ç‫כ‬ ¹ è Ò' Ò o # Å Ò# Q Ì o^ ü <? /6 xs ° ú rÌ É o^ \ ¦¹ ÔÜ 1 ¼ true\ ¦ì Í ø 8 ¨ ¦ , \ Ü O ¼ false\ ¦ì ͨ ø ô 8 Ç . ¹ Ô 1 ¦ HÌ o^ o Û ¼à Ô? /\ e Ü ¼ & " f HÕ ª‫כ‬ ¹ è\ ¦ o v ¸2 ¤s 1 xK l 9, \ Ü O ¼ & " f_ 0 Au H t · § ú ô Ç . \ V) o Û ¼à Ô_ I © 6 §õ £ ° ú ¦ . 0 [a] 1 [b] 2 [c] 3 [d] 4 [e] @5 [f] 6 [g] 7 [h] cursor 5\ e ` ¦M : find(new Character(c))\ ¦ o Û ¼à Ô_ I © H 6 §õ £ ° ú . 0 [a] 1 [b] @2 [c] 3 [d] 4 [e] 5 [f] 6 [g] 7 [h]

4


7

Post-Lab • ¶ { ú 9 , ] j\ è‫כ‬ ¹÷ & H¨

ç î Hq 6 x` ¦> í ß .

5


c °2005, sangjin@kut.ac.kr

„ ę –‰ ÂŹĂ‹ ĂŹĂ? ̛ P ò Laboratory 5. Stack ADT

1

Â? Ă—X Ă’ Ă„ ĂŹ • C \ ` P ÂŚs 6 x  ÂŒ ## 6 3 xĂ›  ŸĂ— ˜ ADT\ Ăž Œ½ ¨Â‰ ÂłK & ‘ r : .

2

4 ~ Âż • Ă› Ÿ× ˜• Ăž ¸o Ă› Ÿà Ôß < Ă° Ă? t ø – Ă?°  Â“ Ăş r É { _ 9 ‍כ‏ šÂ™ è[ ts Ăž " f– Ă?‚ + A› Ăž a> ' \ ÂŚ t • ¸2 ¤Ă„ Â&#x; Âťt Â? HX <s ' ½ ¨Â› ¸s . s & “ h rĂ› É Ÿ× ˜\ Ăž  " f‍כ‏ šÂ™ èÂ? H† Ă“ ½ ÂœĂ› Š Ÿ× ˜d Ăž v(top)\  Ă† Ă’ á &9, ] j • ¸Â† Ă“ ½ Âœd Š v\  " fs Ă€ Ă’# Q” . • C \ ` P ÂŚs 6 x  ÂŒ #Ă› Ÿ× ˜` Ăž ά ½Â‰ Âł & l 0 AK Object 9 tA Ăž Ă› Âź\ ÂŚ 6 x½  Ă‰Ăƒ + Âşe ” . Ă• ÂŞ Q Object 9 tA Ăž Ă› Âź\ ÂŚ 6 x  Â€ 4 ¤ Â&#x; ~ Ă“d ½ (by copy)` ” ÂŚ 6 x½  Ă‰Ăƒ + Âş\ “ O ÂŚ, ‚ Ă?› Ăƒ ¸~ Ă“d ½ (by reference)` ” ÂŚ 6 x½  Ă‰Ăƒ + º¾ Ăš\ 1  \ O . ‚ Ă?› Ăƒ ¸~ Ă“d ½ ` ” ÂŚ 6 x  Â€ 4 ¤ Â&#x; ~ Ă“d ½ \ ”  q K Âœ@ Š /& Ăœ h Ÿ– Ă?½ ¨Â‰ Âłs & ~ “ 1 ÂŚ/ Nç B – Ă&#x; 6 x8  ¤Â€ ÂŁ s $

0 Ă­ x€ p \  " fa ~Ăœ % Âź Ăź @Ă‚ Ă’\  " fĂŒ o^ Â? ‰ _ ÂœI Š \ ÂŚ&

K Ăą ” ~ Ă“Z ½ Ăź O @\  Â? r~ É Ă“Z ½ Ăœ O Ÿ– Ă?› ¸ Â•½ ÂŒ Ă‰Ăƒ + Âş e ” . \ V) s Ă” Ăš Qo _ ArrayListÂ? H‚ Ă?› Ăƒ ¸~ Ă“d ½ ` ” ÂŚ 6 x  # ÂŒ½ ¨Â‰ ³á & &# Qe ” . class MyClass{ private int value; public MyClass(int val){ value = val; } public int get(){ return value; } public void set(int val){ value = val; } public String toString() { return ""+value; } } public class FirstSample { public static void main(String[] args){ ArrayList list = new ArrayList(); MyClass c1 = new MyClass(10); MyClass c2 = new MyClass(20); MyClass c3 = new MyClass(30); list.add(c1); list.add(c2); list.add(c3); for(int i=0; i<3; i++){ System.out.println(list.get(i)); } c1.set(15); for(int i=0; i<3; i++){ System.out.println(list.get(i)); } } }

' Ă? P : forĂŤ H_ Ă˜ Τ 4 Ăľ : 10 20 30 Âż º P : forĂŤ H_ Ă˜ Τ 4 Ăľ : 15 20 30 • “ ' ` Â…s Ă› Âź\ ÂŚs 6 xĂ´  Ă‡4 ¤ Â&#x; ~ Ă“d ½ ` ” ÂŚ 6 x  Â€ 0 A\ V\  " f% ƒ! 9 3 tA Ăž Ă› Âź\  " f] j/ N B Â? Ht &

Â? Ăą a~ ) Ă“Z ½ Ăź O @\  Â? H Â? r É Ă“Z ½ ~ Ăœ O Ÿ– Ă?ĂŒ o^ Â? ‰_ ÂœI Š \ Œ¸ › Â•½ ÂŒ Ă‰Ăƒ + Âş\ O .

1


• s z ´_ v\ Ăž  " fÂ? H 6 §þ ÂŁ °  Â“ Ăş r Listable interface\ É ÂŚs 6 x  # ÂŒĂ› Ÿ× ˜` Ăž Œ½ ¨Â‰ Âł & # Œ‘ r : . public interface Listable extends Cloneable{ Object clone(); } 6 §Â“ ÂŁ r Listable interface ½ É ¨Â‰ ³ô & Ç9 tA Ăž Ă› Âź_ \ VÂ? H 6 §þ ÂŁ °  ú . public class cInteger implements Listable { private int value; public cInteger(){ value = 0; } public cInteger(int val){ value = val; } public int get(){ return value; } public void set(int val){ value = val; } public Object clone(){ try{ return super.clone(); } catch(CloneNotSupportedException e){ return null; } } public String toString(){ return ""+value; } }

3

Stack ADT • ½ ¨Â› ¸: ‚ + AĂ­ Ăž H" f\ ÂŚ t 9, y •‍כ‏ ÂŒ šÂ™ è_ Ă­ H" fÂ? HÂś š{ Ăş Â? 9 aĂ­ ) H" f\  _ K &

Â? Ăą a ) . Æ Ă’ Â? HĂ› Ÿ× ˜d Ăž v\  s Ă€ Ă’# Qt 9, ] j • ¸Ă› Ÿ× ˜• Ăž ¸d v\  " f sĂ€ Ă’# Q” . s z ´_ v\ Ăž  " fÂ? HC \ ` P ÂŚs 6 xĂ´  Ă‡Ă› Ÿ× ˜ ADT\ Ăž Œ½ ¨Â‰ ³ô & Ç . • ½ ¨$

‍כ‏ Ă­ šÂ™ è: Object { 9 _ ‍כ‏ šÂ™ è[ t` Ăž ÂŚ$  Âœ½ Š ÉC + \ , Ă› P Ÿ× ˜` Ăž ÂŚ] H X ½ ÉM + :€ 9 ‍כ‏ šô ÇÛ Ÿ× ˜d Ăž v&

˜ Ăą Ă? • ƒ Ă­ – Ă&#x; ‘ rĂ’ : t$ q

Ă­ : Stack() – l • Ă– ³‚ Ă?Z : 6 ĂŒ x|  Ă“s ž DEF_STACK_CAPACITY“ ‘ Ă› Ÿ× ˜` Ăž ÂŚĂ’ t$ q

Ă´ Ă­ Ç . Ă› Âź% 7 ˜_ Ă’ t$ q

Â? Ă­ H setup() B j™ è Âź\ Ă— ÂŚs 6 xĂ´  Ă‡ . – Ă’ t$ q

Ă­ : Stack(int capacity) • b ‚ 9 Ă?Z : capacity>0 ĂŒ Ă– ³‚ Ă?Z : capacity>0s ĂŒ € 6 x|  Ă“s ž capacity“ ‘ Ă› Ÿ× ˜` Ăž ÂŚĂ’ t$ q

Ă­ “ ÂŚ, Ă• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ 6 x|  Ă“s ž • DEF_STACK_CAPACITY“ ‘ Ă› Ÿ× ˜` Ăž ÂŚĂ’ t$ q

Ă´ Ă­ Ç . Ă› Ÿ× ˜_ Ăž Ă’ t$ q

Â? Ă­ H setup() B j™ èĂ— Âź\ ÂŚs 6 xĂ´  Ă‡ . – Ă’ t$ q

Ă­ • ¸š §s ÂĄ : void setup(int capacity) sB j™ èĂ— ÂźÂ? HĂ’ t$ q

Ă­ ĂŤ – Ă&#x; 6 x  Ă™ Ÿ– Ă? private B j™ èĂ— Ÿ– Ă?ĂŤ –Ž Ă&#x; H . • • 9 b‚ Ă?Z : capacity>0, ĂŒ • Ă– ÂłĂ? ‚Z :  ĂŒ x 6| Ă“s ž capacity“ ‘ Ă› Ÿ× ˜` Ăž ÂŚĂ’ t$ q

Ă´ Ă­ Ç . – void push(Object newElement) • b ‚ 9 Ă?Z : newElement!=null, isFull()==false ĂŒ Ă– ³‚ Ă?Z : h ĂŒ D‍כ‏ šÂ™ è\ ÂŚĂ› Ÿ× ˜d Ăž v\  Ă† Ă’ Ă´ Ç . • x p Ă´V Ç \Ăź @: StackOverflowException • 0 – void pop() b ‚ 9 Ă?Z : isEmpty()==false ĂŒ • • Ă– ³‚ Ă?Z : Âź ĂŒ Û× ˜d Ăž v\  e Â? ” H‍כ‏ šÂ™ è\ ÂŚ] j Ă´ Ç . x p Ă´V Ç \Ăź @: StackUnderflowException • 0 – Object top()

2


• b ‚ 9 Ă?Z : isEmpty()==false ĂŒ • Ă– ³‚ Ă?Z : Âź ĂŒ Û× ˜d Ăž v\  e Â? ” H‍כ‏ šÂ™ è\ ÂŚĂŹ Ă?¨ ø Š 8 # ÂŒĂŻ r . Ă› Ÿ× ˜ Ăž ^ ‰Â? H t ¡ §Â? Ăş H . • 0 x p Ă´V Ç \Ăź @: StackUnderflowException – void clear() • Ă– ³‚ Ă?Z : Âź ĂŒ Û× ˜\ Ăž  e Â? ” H— ¸ÂŽ H‍כ‏ šÂ™ è\ ÂŚ] j Ă´ Ç . – boolean isEmpty() • Ă– ³‚ Ă?Z : Âź ĂŒ Û× ˜s Ăž q # Qe Ăœ ” Ÿ€ true\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚĂ• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – boolean isFull() • Ă– ³‚ Ă?Z : Âź ĂŒ Û× ˜s Ăž T ` q e Ăœ ” Ÿ€ true\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚĂ• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – void showStructure() • b ‚ 9 Ă?Z : \ ĂŒ 6 O § ÂŁ • Ă– ³‚ Ă?Z : Ă› ĂŒ Ÿ× ˜\ Ăž  e Â? ” H— ¸ÂŽ H‍כ‏ šÂ™ è\ ÂŚ topĂ‚ Ă’' bottom t Ă˜ Τ Ă´ 4 Ç . ĂŤ –€ Ă&#x; •Û Â? Ÿ× ˜s Ăž q # Qe Ăœ ” Ÿ€ “Stack is empty.â€?\ ÂŚĂ˜ Τ Ă´ 4 Ç . s B j™ èĂ— ÂźÂ? Hn ! Q^

` ç ÂŚ3 q& l Ăœ h Ÿ– Ă?ĂŤ – Ă&#x; 6 xÂ?  a ) .

4

PreLab • Pre-lab\  " fÂ? HC \ ` P ÂŚs 6 x  # ÂŒĂ› Ÿ× ˜` Ăž Œ½ ¨Â‰ Âł & t ĂŤ – post-lab\ Ă&#x;  " fÂ? Hƒ o Ă› Ÿà Ă”\ ÂŚs 6 x  # ÂŒĂ› Ÿ× ˜` Ăž Œ½ ¨Â‰ ³½ & É + s ‍כ‏ . " f 6 §þ ÂŁ °  Â“ Ăş r Stack interface\ É ÂŚ&

_ Ăą # ÂŒ 6 xĂ´  Ă‡ . public interface Stack { boolean isEmpty(); boolean isFull(); void clear(); void push(Object item) throws StackOverflowException; void pop() throws StackUnderflowException; Object top() throws StackUnderflowException; } • s “ ' ` Â…s Ă› Âź\ ÂŚ: xK Â&#x; ¡ Â˜Ăƒ Ăş Âşe 1 ” ws p s z ´_ vĂ‚ Ăž Ă’' \ VĂź @% ƒ o\ ÂŚ 6 x  # Œš ¸Ă€ Ă“\ ÂŚ% ƒo Ă´ Ç . s \ ÂŚ0 AK 6 §þ ÂŁ °  Â“ Ăş rÂż É Âş t \ VĂź @ƒ %o Ăž t 9A Ă› Âź\ ÂŚ&

_ Ăą # ÂŒ 6 xĂ´  Ă‡ . public class StackOverflowException extends RuntimeException { public StackOverflowException(){ super("Push attempted on a full stack."); } public StackOverflowException(String msg){ super(msg); } } public class StackUnderflowException extends RuntimeException{ public StackUnderflowException(){ super("Pop or top attempted on a empty stack."); } public StackUnderflowException(String msg){ super(msg); } } ĂŒ` Â…s t \  e Â? ” H lab05.zip\ ÂŚ ĂŽ r~ ĂŽ Ăƒ Stack interface\ Œ½ ¨Â‰ ³ô & Ç ArrayStack\ ÂŚ 6 xK  Â‘ r : . • < – TestStack` ÂŚs 6 xĂ´  Ă‡Â… _Ă› Ÿà Ă”~ Ă“Z ½ O

3


7 xÀ á Ó push pop push push top clear pop

"§

î

î +a +b +c +d -+e +f +g +n t c -

l @ /& ÷ H õ dcba ba gfeba StackOverflowException g Stack is empty StackUnderflowException

q ¦

• ½ ¨ ³ô & ÇÛ ¼× ` þ ¦s 6 x # F c ñ_ Ó 6 ü §s £ ` ¦ r³ É ð ³d & ` ¦ Há Ô ÐÕ ªÏ ` þ ¦ $

í . – F c ñ_ Ó 6 ü §s £ ` ¦ r³ É ð ³d & _ \ V) (xx(xx())x) ()x(x) ()((xxx)x) – F c ñ_ Ó 6 ü §s £ ¸ 3 ú w l a³ ) ð ³d & _ \ V) (xx(xx())x)x) ()(x(x) ()((xxx)x)( ÓZ ½ ~ O rÅ É Ò# Q ³ ð ³d & ` ¦% 6 §Â £ Ò' Y V Ð~ Óë ½ H " f ‘(’ë H \ ¦ë ß Õ ª ` ‫כ‬ ¦Û ¼× \ þ push ¦, ‘)’` ¦ë ß pop` ¦ô Ç . ð ³ ³d & _ ¸ Hë H \ ¦~ Óë ½ Hô ÇÊ ê\ Û ¼× s þ q # Qe t · §Ü ú ¼ ³ ð ³d & s ¸ 3 ú w÷ l &# Qe H ` ‫כ‬ ¦_ p ô Ç . < Ì` s t \e H Balanced.java\ ¦¢ a$

í . • F c ñü @\ × æF c ñ {}, @ /F c ñ [] t 6 x # ë ß H³ ð ³d & s ` ¦ rt É ½ ÉÃ + ºe ¸2 ¤ Balanced.java\ ¦ X S © .

5

InLab • Ä ºo H Ð: x s ³ ðl Z (infix notation)` O ¦s 6 x # í Õ ß td ü ` ¦ $

ô í Ç . s ³ ðl Z s O ê Í ø A í Õ ß td ü % ! 3 s í ß \ ¦¿ ºx í ß _ s \ 0 Au ¸2 ¤ $

í H~ Ód ½ ` ¦´ ô ú Ç . (3 + 4) ∗ (6/2) s ³ ðl Z O É r | Ðs à f ] X Ð ¦> í ½ ß ÉM + :\ Hë H] j \ t O ë ( ß É Ó' d # % o l \ HÄ º í H0 A \ ¦ ¦ 9K HÔ ¦¼ # Ês < e . • Ê êu ³ ðl Z (postfix notation)` O ¦s 6 x # í Õ ß td ü ` ¦ $

í ( É Ó' d # % o l s ³ ðl Z O \ q K ¼ o # . ê Êu ³ ðl Z \ O " f H A í Õ ß td ü % ! s 3 í ß \ ¦¿ ºx í ß 6 §\ £ Ð0 Au ¸ 2 ¤ $

ô í Ç . 34 + 62/∗ = 762/∗ = 73∗ = 21 Ê êu ³ ðl Z \ O f " H í ß ¨

÷ î & Hí H" f Т aA , ¤\ á " f ¸ rA É ¤Ü á ¼ Ð0 Au ô Ç . • Û ¼× ` þ ¦s 6 xô ÇÊ êu ³ ðl Z ¨ O

~ î ÓZ ½ O 6 § £ ¦ `ì Í4 ø ¤ô Ç . – Õ w ü \ ¦ë ß Û ¼× \ þ pushô Ç . Õ w ü \ ¦Û ¼× \ þ push½ ÉM + :\ H cInteger 9 tA þ Û ¼\ ¦s 6 xô Ç . Ê êu ³ ðl _ O Z : £ ¤$

í ô © Ç o à ºÕ w ü ë x ß í ß Ð 6 x½ ɺ + Ãe . – í ß \ ¦ë ß Û ¼× \ þ " f¿ ºx í ß \ ¦ pop # í ß \ ¦& 6 h x ¦Õ ª õ\ ¦ r Û ¼× \ þ pushô Ç . s z ´_ v\ þ " f Hs í ß ë ß ¦ 9ô Ç . • < Ì` s t \ " f Postfix.java\ ¦ î r~ Î Ã Ê êu ³ ðl Z í O Õ ß td ü ` ¦¨

î Há Ô ÐÕ ªÏ ` þ ¦¢ a$

í . – ¢ a$

` í ¦ 6 § £ ¦ `s 6 x # I Û ¼à Ô .

4


ÂŽ 7 xĂ€ ĂĄ Ă“ Ă­ ƒ – Ă&#x; ĂŤ –e Ă&#x; Â? ” H

Ă„ â Âş Ă­ ƒ – Ă&#x; Ă— ĂŚ^ ?á o &# Qe Â? ” H

Ă„ â Âş1 Ă­ ƒ – Ă&#x; Ă— ĂŚ^ ?á o &# Qe Â? ” H

Ă„ â Âş2 ¸ÂŽ — Hƒ Ă­ – Ă&#x; = Q\ ĂĽ  e Â? ” H

Ă„ â Âş 0 ž Âşl –{ Ă&#x; ĂŠ Ă• 9 w Ăź ¢ p a$

Ă­ Ă­ –Õ Ă&#x; td Ăź ”

6

Ă­Ăź – Ă&#x; t Ă•d ” 34+ 34+52/* 93*2+14675-+* 20/ 9 4+

l @ /& á� H þ 7 14 28 32 divide-by-zero error 9 Illformed expression

q “ Œ

PostLab • ƒ ½ ¨Â› ¸\ ÂŚs 6 x  # ÂŒĂ› Ÿ× ˜` Ăž Œ½ ¨Â‰ ³½ & É +

Ă„ â Âş\  Â? H 6 §þ ÂŁ °  ú“ r inner 9 É tA Ăž Ă› Âź\ ÂŚ&

_ Ăą # ÂŒ 6 xĂ´  Ă‡ . inner 9 tA Ăž Ă› Ÿê Ă?9 ø tA Ăž Ă› Âź? /Ă‚ Ă’\  &

_ Ăą Â? a9 ) tA Ăž Ă› Âź\ Ϋ Â˜Ă´ Ăş Ç . private class StackNode{ public Object info; public StackNode next; } • ƒ ½ ¨Â› ¸\ ÂŚ s6 x  Â€ Ă› Ÿ× ˜s Ăž T ` q Â? H

Ă„ â ÂşÂ? H“ ÂŚ 9 t ¡ § Ăş • ¸Â? a ) . ΢ a$

Ă­ r š ¸. (Listable “ ' ` Â…s Ă› Âź\ ÂŚs 6 x  # ÂŒ4 ¤ Â&#x; ~ Ă“d ½ ` ” Œ½ ¨Â‰ ³ô & Ç .) • LinkedStack.java\ • ¢ a$

Ă­ € TestStack` ÂŚs 6 x  # ÂŒ ÂŽ K ‘ r : .

5


c °2005, sangjin@kut.ac.kr

Ä ¬Ë ìÍ æ P ò Laboratory 6. Queue ADT

1

×X Ò Ä ì • C \ ` P ¦s 6 x ## 6 3 xÇ © ADT\ ¦½ ¨ ³K & r : . • ½ ¨ ¸\ ¦ s6 x # # 6 3 xÇ © ADT\ ¦½ ¨ ³K & r : .

2

4 ~ ¿ • Ç © ¸o Û ¼à Ôü < ð Í t ø а ú r É { _ 9 ‫כ‬ ¹ è[ ts þ " f Ð + A þ a> ' \ ¦ t ¸2 ¤Ä »t HX <s ' ½ ¨ ¸s . s & h rÇ É ©\ " f‫כ‬ ¹ è H Ó ½ © p+ ± '(rear)\ Æ Ò ÷ &9, ] j H Ó ½ © p· ± ¡(front)\ ú " fs À Ò# Q . • s z ´_ v\ þ " f H Object 9 tA þ Û ¼\ ¦s 6 xô Ç Ð Ã ¸~ Ód ½ ` ¦ 6 x # y ADT\ ¦½ ¨ ³ô & Ç . • ½ ¨ ¸\ ¦s 6 x # Ç ©\ ¦½ ¨ ³½ & É +

Ä â º\ H 6 §õ £ ° É ú r inner 9 tA þ Û ¼\ ¦&

_ ñ # 6 xô Ç . inner 9 tA þ Û ¼ Í9 ø ê tA þ Û ¼? /Â Ò\ &

_ ñ aþ ) t 9A Û ¼\ ¦´ ô ú Ç . private class QueueNode{ public Object info; public QueueNode next; } • ½ ¨ ¸\ ¦ s6 x Ç © T ` q H

Ä â º H ¦ 9 t · § ú ¸ a ) . • C \ ` P ¦s 6 xô ÇÇ ©_ ½ ¨ ³õ & ½ ¨ ¸\ ¦s 6 xô ÇÇ ©_ ½ ¨ ³_ & Ó to ü & h ¸_ v þ C \ ` P ¦s 6 xô ÇÇ ©_ ½ ¨ ³ &

½ ¨ ¸\ ¦s 6 xô ÇÇ ©_ ½ ¨ ³ & queue

queue

front

0

rear

1

size

front

rear

2

element

A

3

B

A

B

Queue ADT • ½ ¨$

‫כ‬ í ¹ è: Object { 9 _ Ì o^ [ t þ • ½ ¨ ¸: + Aí þ H" f\ ¦ t 9, y ‫כ‬ ¹ è_ í H" f H¶ { ú 9 aí ) H" f\ _ K &

ñ a ) . Æ Ò H p+ ± '\ s À Ò# Qt 9, ] j Hp ±· ¡\ ú " fs À Ò# Q . • í ß – l rÒ : t$ q

í : Queue() • Ö ³ ÐZ : 6 Ì x| Ós ¾ DEF_QUEUE_CAPACITY Ç ©\ ¦Ò t$ q

ô í Ç . Ç ©_ Ò t$ q

í H setup() B j è× ¼\ ¦ 6 s xô Ç . – Ò t$ q

í : Queue(int capacity)

1


• b ‚ 9 Ă?Z : capacity>0, ĂŒ • Ă– ³‚ Ă?Z : capacity>0s ĂŒ € 6 x|  Ă“s ž capacity“ ‘ Ç Š\ ÂŚĂ’ t$ q

Ă­ “ ÂŚ, Ă• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ 6 x|  Ă“s ž DEF_QUEUE_CAPACITY“ ‘ Ç Š\ ÂŚĂ’ t$ q

Ă´ Ă­ Ç . Ç Š_ Ă’ t$ q

Â? Ă­ H setup() B j™ èĂ— Âź\ ÂŚs 6 xĂ´  Ă‡ . – Ă’ t$ q

Ă­ • ¸š §s ÂĄ : void setup(int capacity) • sB j™ èĂ— ÂźÂ? HĂ’ t$ q

Ă­ ĂŤ – Ă&#x; 6 x  Ă™ Ÿ– Ă? private B j™ èĂ— Ÿ– Ă?ĂŤ –Ž Ă&#x; H . • 9 b‚ Ă?Z : capacity>0 ĂŒ • Ă– ÂłĂ? ‚Z :  ĂŒ x 6| Ă“s ž capacity“ ‘ Ç Š\ ÂŚĂ’ t$ q

Ă´ Ă­ Ç . – void enq(Object newElement) b ‚ 9 Ă?Z : newElement!=null, isFull()==false ĂŒ • • Ă– ³‚ Ă?Z : h ĂŒ DĂŒ o^ Â? ‰\ ÂŚp Âą+ '\  Ă† Ă’ Ă´ Ç . • \ VĂź @: QueueOverflowException, o Ă› Ÿà Ă” T ` q e ` ” ÂŚM :Âľ Ă?Ă’ 1 t q – Object deq() • b ‚ 9 Ă?Z : isEmpty()==false ĂŒ • Ă– ³‚ Ă?Z : Âą ĂŒ ¡ p ÂĄ\ Ăş  e Â? ” HĂŒ o^ Â? ‰\ ÂŚ] j “ ÂŚ, s ĂŒ o^ Â? ‰\ ÂŚĂŹ Ă?¨ ø Š 8 # ÂŒĂŻ r . • \ VĂź @: QueueUnderflowException, o Ă› Ÿà Ă” q # Qe ` ” ÂŚM :Âľ Ă?Ă’ 1 t q – void clear() • Ă– ³‚ Ă?Z : Š ĂŒ Ç\  e Â? ” H— ¸ÂŽ HĂŒ o^ Â? ‰\ ÂŚ] j Ă´ Ç . – boolean isEmpty() • Ă– ³‚ Ă?Z : Š ĂŒ Ç q# Qe Ăœ ” Ÿ€ true\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚĂ• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – boolean isFull() Ă– ³‚ Ă?Z : Š ĂŒ Ç T ` q e Ăœ ” Ÿ€ true\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚĂ• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . • – void showStructure() b ‚ 9 Ă?Z : \ ĂŒ 6 O § ÂŁ • • Ă– ³‚ Ă?Z : Ç ĂŒ Š\  e Â? ” H— ¸ÂŽ HĂŒ o^ Â? ‰\ ΂ Š_ p¡ Âą ÂĄ\ Ăş  e Â? ” H‍כ‏ šÂ™ èĂ‚ Ă’' Y V@ /– Ă?Ă˜ Τ Ă´ 4 Ç . ĂŤ –€ Ă&#x; •Ç Â? Š q # Q Ăœ ” e Ÿ€ “Queue is empty.â€?\ ÂŚĂ˜ Τ Ă´ 4 Ç . s B j™ èĂ— ÂźÂ? Hn ! Q^ ç

` ÂŚ3 q& l Ăœ h Ÿ– Ă?ĂŤ – Ă&#x; 6 xÂ?  a ) .

4

PreLab 1. • 6 §þ ÂŁ °  Â“ Ăş r Queue interface\ É ÂŚ&

_ Ăą Ă´ Ç 6 §\ ÂŁ  s interface\ Œ½ ¨Â‰ ³ô & Ç ArrayQueueĂź < LinkedQueue\ Œ½ ¨ ³ô & ‰ Ç . public interface Queue { public boolean isEmpty(); public boolean isFull(); public void clear(); public void enq(Object item); public void deq() throws QueueUnderflowException; } ArrayQueueÂ? HC \ ` P ÂŚs 6 x  # ÂŒ½ ¨Â‰ ³ô & Ç# 6 3 xÇ  Š ADTs “ ÂŚ, LinkedQueueÂ? Hƒ ½ ¨Â› ¸\ ÂŚs 6 x  # ÂŒ½ ¨Â‰ Âł & Ă´# Ç 6 3 xÇ  Š ADTs . • s z ´_ v\ Ăž  " f 6 x  Â? HÂż Âş t \ VĂź @% ƒo 9 tA Ăž Ă› ÂźÂ? H 6 §þ ÂŁ °  ú . public class QueueOverflowException extends RuntimeException { public QueueOverflowException(){ super("Enqueue attempted on a full queue."); } public QueueOverflowException(String msg){ super(msg); } }

2


public class QueueUnderflowException extends RuntimeException { public QueueUnderflowException(String msg){ super("Dequeue attempted on a empty queue"); } public QueueUnderflowException(String msg){ super(msg); } } • < ĂŒ` Â…s t \  e Â? ” H Lab06.zip

{ ` 9 ÂŚ ĂŽ r~ ĂŽ Ăƒ ArrayQueueĂź < LinkedQueue\ ÂŚ 6 xK  Â‘ r : . – TestQueue.java\ ÂŚs 6 xĂ´  Ă‡_ Â…Ă› Ÿà Ă”~ Ă“Z ½ : main B O j™ èĂ— Âź_ '  Ă? P : “ ¢ ¸Â? HÂż º P : “ ` ÂŚĂ… Ă’$ % 3 ƒ o # ÂŒy •½ ÂŒ ¨Â‰ Âł` & ÂŚ_ Â…Ă› Ÿà Ă”K ‘ r : . ÂŽ 7 xĂ€ ĂĄ Ă“ push pop push push clear pop

"§

ĂŽ

ĂŽ +a +b +c +d -+e +f +g +n c -

l @ /& á� H þ (Top) a b c d (Bottom) (Top) c d (Bottom) (Top) e f g c d (Bottom) QueueOverflowException Queue is empty QueueUnderflowException

q “ Œ

• Palindrome` ÂŚ ÂŽ Â? HĂĄ Ԗ Ă?Ă• ÂŞĂ? ›` Ăž ΂ Šß <Ă› Ÿ× ˜` Ăž Œ— ¸¿ Âş 6 x  # ÂŒ½ ¨Â‰ ³ô & Ç . Palindromes ĂŞ Ă?¡ ø ÂĄĂœ Ăş Ÿ– Ă?{ Ăœ 9 Âź + ' – Ă?{ 9 Ăœ Âź °  Â“ Ăş rĂŤ É H \ ` P ÂŚĂş ˜ ´ô Ç . \ V\ ÂŚ[ t# Ăž Q “madamâ€?“ r palindromes É . • Ç Šß <Ă› Ÿ× ˜` Ăž ÂŚ s6 xĂ´  Ă‡ Palindrome ÂŽ ¡ ˜“ Ăş ÂŚo 7 § ÂŁ – ĂŠ –> Ă&#x; 1. h DÇ Šß <D hĂ› Ÿ× ˜` Ăž ÂŚĂŤ –Ž Ă&#x; H . –> Ă&#x; 2. ĂŤ H \ \ P  e Â? ” Hy •Í ÂŒ H \  @ /K 6 §` ÂŁ ÂŚĂ´ Ç . – ĂŠ • ĂŤ H %

ĂŤ ò H s € ™ èÍ H – Ă?Â

Ă´ â Ç . • s ĂŤ H \ ÂŚĂ› Ÿ× ˜\ Ăž  pushĂ´ Ç . • s ĂŤ H \ ΂ Š\  enqueueĂ´ Ç . – ĂŠ –> Ă&#x; 3. stillPalindromes Â? H boolean  Ăƒ Âş\ ÂŚ true– Ă?[ & O

Ă´ Ăą Ç . – ĂŠ –> Ă&#x; 4. Š Ç\  Í H ÂŒ ™ z e “ ” ÂŚ stillPalindromes ‚ Ă?s Ăƒ € 6 §` ÂŁ ÂŚĂŹ Ă?4 ø ¤ô Â&#x; Ç . • Š Ç \" fĂŤ H \ ÂŚ dequeue # ÂŒĂ› Âź% ˜\ 7  top\  e Â? ” HĂŤ H Ăź <q “ §ô Ç . • °  Ÿ Ăş ĂœÂ€ Âź Û× ˜\ Ăž  " f pop` ÂŚ “ ÂŚ, Ă˜ Ԁ stillPalindrome` ÂŚ false– Ă?[ & O

Ă´ Ăą Ç . < Palindrome.java\ ÂŚ ĂŽ r~ ĂŽ Ăƒ ¢ a$

í . • Palindrome.zipß

5

InLab 1 • í¨ H ŠÇ 8 ŠÂ? H _ Â&#x; í“ ' ĂŤ –` Ă&#x; ÂŚs 6 x  # ÂŒĂ‡ Š\ ÂŚĂ„ Âťt ½ Ă‰Ăƒ + Âşe ” . s M : front˜ Ă? Â? H rear\ ÂŚĂ„ Âťt K Ç Š_ % ƒ6 §þ ÂŁ = Q` ĂĽ ÂŚ1 xr l \  ] X H l 6 xs  . • LinkedQueue\ ÂŚ Âœ5 Š q~ Ă… Γ Ăƒ r CircularLinkedQueue\ É ΢ a$

Ă­ . public class CircularLinkedQueue extends LinkedQueue { public CircularLinkedQueue(){ rear = null; } public boolean isEmpty(){ return (rear == null); } public void enq(Object item){ ... } public Object deq() throws QueueUnderflowException{ ... } public void showStructure(){ ... } } j™ èĂ— Âź_ ½ ¨Â‰ ³“ & r É 6 §Ă• ÂŁ ÂŞa >` Ă‹ Œ‚ Ă?› Ăƒ ¸ . • enq B

3


queue

rear

queue

rear

3

2

A

A

B

1

queue

rear

3

2

A

B

B 1

• deq B j™ èĂ— Âź_ ½ ¨Â‰ ³“ & r É 6 §Ă• ÂŁ ÂŞa >` Ă‹ Œ‚ Ă?› Ăƒ ¸ .

queue

rear

queue

rear

A

A

B

1 queue

rear

A

B

C

1

6

InLab 2 • Ă„ º‚ Ă­ H0 AÇ Šê Ă?[ ø t# Ăž Q Â? HĂ­ H" fĂź < œ› Š a\ ' s O Ă„ º‚ Ă­ H0 A\  Âš ¸Â? HĂ­ H" f &

á Ăą &Â? HÇ Š\ Ϋ Â˜Ă´ Ăş Ç . • Ă„ º‚ Ă­ H0 AÇ ŠÂ? H enqueue½ ÉM + :Ă„ º‚ Ă­ H0 A\  œ š{ Ăş á 9 &Â? H0 Au &

á Ăą &• ¸2 ¤½ Â&#x; ¨Â‰ ³½ & Ă‰Ăƒ + Âşe “ ” ÂŚ, Ă?@ ø ĂŹ /– Ă? dequeue½ ÉM + :Ç Š\  e Â? ” H— ¸ÂŽ H‍כ‏ šÂ™ è\ ÂŚ ÂŽ # ÂŒ dequeueá &Â? H‍כ‏ šÂ™ è\ ÂŚ &

½ Ăą Ă‰Ăƒ + Âşe ” . • s z ´_ v\ Ăž  " fÂ? H„ ~ Ă“Z ½ ` O Œ½ ¨Â‰ ÂłK & ‘ r : . 6 §` ÂŁ ΢ a$

Ă­ . public class PriorityArrayQueue extends ArrayQueue{ public PriorityArrayQueue(){ super(); } public PriorityArrayQueue(int capacity){ super(capacity); } public void enq(Object item) throws QueueOverflowException{ // implement this method } } ¨Â‰ ³½ & ÉM + :“ ÂŚ9 † Ă“ ½ • ½ 4


– q “ §Â? H compareTo j B™ èĂ— Âź\ ÂŚs 6 xĂ´  Ă‡ . – C \ “ P rĂ­ É H¨ ŠC 8 \ s P . – Ç Š q # Qe Â? ” H

Ă„ â Âş: front Ă” ÂŚÂ , rear 7 x ÂŁ – p ¹¡ ÂĄ\ Ăş  œ š{ Ăş 9 á &# Q Â? H

Ă„ â Âş: front y ™™ ÂŒ è, rear Ă” Œ – p Âą+ '\  œ š{ Ăş 9 á &# Q Â? H

Ă„ â Âş: front Ă” ÂŚÂ , rear 7 x ÂŁ – Ă— Ìç –\ Ă&#x;  œ š{ Ăş 9 á &# Q Â? H

Ă„ â Âş: ÂœS Š \ !  2 § ÂŁ

7

PostLab • Ă„ º‚ Ă­ H0 AÇ Š\ ÂŚÂƒ ½ ¨Â› ¸\ ÂŚs 6 x  # ÂŒ½ ¨Â‰ ÂłK & ‘ r : . • ƒ ½ ¨Â› ¸\ ÂŚ s6 xĂ´  Ă‡ĂŽ r‚ Ă­ H0 AÇ ŠÂ? H frontĂŤ –` Ă&#x; ÂŚs 6 x  # ÂŒ½ ¨Â‰ ³½ & Ă‰Ăƒ + Âşe ” . 6 §` ÂŁ ΢ a$

Ă­ . public class PriorityLinkedQueue extends LinkedQueue{ public PriorityLinkedQueue(){ super(); } public void enq(Object item){ // implement this method } } • ½ ¨Â‰ ³½ & ÉM + :“ ÂŚ9 † Ă“ ½ “ §Â? H compareTo j B™ èĂ— Âź\ ÂŚs 6 xĂ´  Ă‡ . – q – Ç Š q # Qe Â? ” H

Ă„ â Âş, p¡ Âą ÂĄ\ Ăş  œ š{ Ăş 9 á &# Q Â? H

Ă„ â Âş, p+ Âą '\  œ š{ Ăş 9 á &# Q Â? H

Ă„ â Âş, Ă— Ìç –\ Ă&#x;  œ š{ Ăş á 9 &# Q Â? H

Ă„ â Âş\ Œ“ ÂŚ 9 # ÂŒ½ ¨Â‰ ³ô & Ç .

5


c °2005, sangjin@kut.ac.kr

Ä ¬Ë ìÍ æ P ò Laboratory 7. ArrayLinkedList ADT

1

×X Ò Ä ì • C \ ` P ¦s 6 x # o Û ¼à Ô ADT\ ¦½ ¨ ³K & r : .

2

4 ~ ¿ • ½ ¨ ¸ HÐ : x1 x& l Ü h ¼ Ð ¸× ¼\ ¦Ò t$ q

í ¦s [ t` þ ¦ # ½ ¨ ³ & t ë C ß \ ` P ¦s 6 x # ½ ¨ ³½ & ÉÃ + º ¸e . • C \ ` P ¦s 6 x # ½ ¨ ³½ & É +

Ä â º\ H6 x| Ós ¾ ] jô Ç÷ &# Qe Ü ¼Ù ¼ Ð1 x& l h ½ ¨ ¸ü <² o ú ¶ { ú ` 9 ¦½ ÉM + :T ` q e Ht # ô Ç . • ¢ ¸ô Ç 6 § £ ¸× ¼\ ¦ o v H í ' H Ð Ã ¸ { s 9 m 6 § £ ¸× ¼ $ ÷ © &# Qe HC \ _ P Ò o ° ‫כ‬s ú . " f 6 §õ £ ° ú r É ¸× ¼\ ¦ 6 xô Ç . protected class ListNode{ public Object info; public int next; } s

Ä â º\ £ § 6 ¸× ¼\ ¦ o v H í ' Ð Ã ¸ { s 9 m Ù ¼ Ð= Q å ¸× ¼\ ¦d Z > l 0 AK null ° ‫`כ‬ ú ¦ 6 x ½Ã É + º\ O . C \ _ P Ò o r6 É §Ã £ º | cà ¨ º\ Ü O ¼Ù ¼ Ð -1` ¦s 6 x # t } ¸× ¼\ ¦d Z ô > Ç . s \ ¦0 AK 6 § £ ° õ ú r É Ã © º\ ¦ 6 xô Ç . public static final int END = -1; • ½ ¨ ¸~ Ód ½ \ " fD h ¸× ¼\ ¦Æ Ò ½ ÉM + :\ H new í ß \ ¦s 6 x # r Û ¼% Ü 7 ¼ РÒ' D h ¸× ¼\ ¦0 Aô Ç/ N B ` ß ç ¦S X Ð # l r > ¸× ¼[ tõ þ ô Ç . t ë C ß \ ` P ¦s 6 x # o Û ¼à Ô\ ¦½ ¨ ³½ & ÉM + :\ Hr Û ¼% Ü 7 ¼ РÒ' D h ¸× ¼\ ¦0 Aô Ç/ Nç B ` ß ¦S X Ð H s ‫כ‬ m C \ _ P Ó× ½ æ\ " f 6 x÷ &t · § ú H Ó` ½ ¦ × þ # 6 x > a ) . s \ ` O ¦~ > 1 l 0 AK C \ ` P ¦Ò t$ q

½ í ÉM + :C \ _ P y Ó` ½ ¦í H & Ü h ¼ Ð # o Û ¼ à Ô\ ¦ë ß H . 7 ¤, ? £ / Ò& Ü h ¼ Ð‫כ‬ ¹ è[ t` þ ¦ K Z ~ ro É Û ¼Ô àü < Ó[ ½ t` þ ¦ K Z ~ ro É Û ¼à Ô¿ º> h\ ¦Ä »t > a ) . • C \ ` P ¦s 6 xô Ç o Û ¼à Ô_ ½ ¨ ³~ & ÓZ ½ O rs É r : ¸à Ô\ ¦ Ð Ã ¸.

3

ArrayLinkedList ADT • ½ ¨$

‫כ‬ í ¹ è: ListNode { _ 9 Ì o^ C \ , P Ó[ ½ t` þ ¦ K Z ~ ro É Û ¼à Ô, ¶ { ú 9 a‫כ‬ ) ¹ è[ t` þ ¦ K Z ~ ro É Û ¼ à Ô • ½ ¨ ¸: q &

§ ñ =o > Û ¼à Ô t &

§ ñ =o > Û ¼à Ô t \ ¶ { ú 0 9 Au Ø Ô . • í ß – l rÒ : t$ q

í : ArrayLinkedList() • Ö ³ ÐZ : 6 Ì x| Ós ¾ DEF_LIST_CAPACITY ListNode[ t` þ ¦$ ½ © ÉC + \ ` P ¦Ò t$ q

í ¦, ¸ H Ó[ ½ t þ ¦ ` H o Û ¼à Ô\ ¦½ ¨» ¤ô ¡ Ç . C \ _ P Ò t$ q

õ í o Û ¼à Ô_ ½ ¨» ¤ ¡ r setup() B É j è× ¼\ ¦s 6 x Ç ô . t$ q

í : ArrayLinkedList(int capacity) – Ò 1


• b ‚ 9 Ă?Z : capacity>0 ĂŒ • Ă– ³‚ Ă?Z : capacity>0s ĂŒ € 6 x|  Ă“s ž capacity“ ListNode[ t` Ăž ÂŚ$  Âœ½ Š ÉC + \ ` P ÂŚĂ’ t$ q

Ă­ “ ÂŚ, Ă• ÂŞ t O X ¡ §Ăœ Ăş Ÿ€ 6 x|  Ă“s ž DEF_LIST_CAPACITY“ ListNode[ t` Ăž ÂŚ$  Âœ½ Š ÉC + \ ` P ÂŚĂ’ t$ q

Ă´ Ă­ Ç . ¢ ¸ô Ǘ ¸ H† ÂŽ Ă“[ ½ t` Ăž ÂŚÂƒ Â? H‘ o Ă› Ÿà Ă”\ Œ½ ¨ ¤ô ÂĄ Ç . C \ _ P Ă’ t$ q

Ăľ Ă­ ‘ o Ă› Ÿà Ă”_ ½ ¨ ¤Â“ ÂĄ r setup() B É j™ èĂ— Âź ÂŚ \ s6 xĂ´  Ă‡ . – Ă’ t$ q

Ă­ • ¸š §s ÂĄ : void setup(int capacity) • sB j™ èĂ— ÂźÂ? HĂ’ t$ q

Ă­ ĂŤ – Ă&#x; 6 x  Ă™ Ÿ– Ă? private B j™ èĂ— Ÿ– Ă?ĂŤ –Ž Ă&#x; H . • Ă– ³‚ Ă?Z : 6 ĂŒ x|  Ă“s ž capacity“ ListNode[ t` Ăž ÂŚ$  Âœ½ Š ÉC + \ ` P ÂŚĂ’ t$ q

Ă­ “ ÂŚ, — ¸ÂŽ H† Ă“[ ½ t` Ăž ÂŚÂƒ Â? H ‘ oĂ› Ÿà Ă”\ ά ½ ¤ô ÂĄ Ç . – abstract void insert(Object item) b ‚ 9 Ă?Z : item!=null, isFull()==false ĂŒ • • Ă– ³‚ Ă?Z : & ĂŒ

§ ù =/q > &

§ Ăą =o > Ă› Ÿà Ă”\  Ă˜ Ă” . • \ VĂź @: ListOverflowException, o Ă› Ÿà Ă” T ` q e ` ” ÂŚM :Âľ Ă?Ă’ 1 t q – abstract boolean delete(Object item) • b ‚ 9 Ă?Z : item!=null, isEmpty()==false ĂŒ • Ă– ³‚ Ă?Z : Ă’ ĂŒ Ă…# Q” ‍כ‏ šÂ™ è o Ă› Ÿà Ă”\  e Ăœ ” Ÿ€ •] ÂŒ j “ ÂŚ true\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚ\ Ăœ O Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . • \ VĂź @: ListUnderflowException, o Ă› Ÿà Ă” q # Qe ` ” ÂŚM :Âľ Ă?Ă’ 1 t q – abstract boolean search(Object item) b ‚ 9 Ă?Z : item!=null, isEmpty()==false ĂŒ • • Ă– ³‚ Ă?Z : Ă’ ĂŒ Ă…# Q” ‍כ‏ šÂ™ è o Ă› Ÿà Ă”\  e Ăœ ” Ÿ€ true\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚ\ Ăœ O Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . • \ VĂź @: ListUnderflowException, o Ă› Ÿà Ă” q # Qe ` ” ÂŚM :Âľ Ă?Ă’ 1 t q – abstract Object retrieve(Object item) • b ‚ 9 Ă?Z : item!=null, isEmpty()==false ĂŒ • Ă– ³‚ Ă?Z : Ă’ ĂŒ Ă…# Q” ‍כ‏ šÂ™ è o Ă› Ÿà Ă”\  e Ăœ ” Ÿ€ Ă• ÂŞ _ ‍כ‏ 4 ¤ Â&#x; ‘ r` : ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚ, \ Ăœ O Ÿ€ null` ÂŚĂŹ Ă?¨ ø Šô 8 Ç . • \ VĂź @: ListUnderflowException, o Ă› Ÿà Ă” q # Qe ` ” ÂŚM :Âľ Ă?Ă’ 1 t q – void clear() Ă– ³‚ Ă?Z : ĂŒ oĂ› Ÿà Ă”\  e Â? ” H— ¸ÂŽ HĂŒ o^ Â? ‰\ ÂŚ] j Ă´ Ç . ‘ o Ă› Ÿà Ă”\ ÂŚD h\ v> r ½ ¨ ¤ô ÂĄ Ç . • – boolean isEmpty() • Ă– ³‚ Ă?Z : ĂŒ oĂ› Ÿà Ă” q # Qe Ăœ ” Ÿ€ true\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚĂ• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – boolean isFull() • Ă– ³‚ Ă?Z : ĂŒ oĂ› Ÿà Ă” T ` q e Ăœ ” Ÿ€ true\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚĂ• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – void showStructure() • b ‚ 9 Ă?Z : \ ĂŒ 6 O § ÂŁ • Ă– ³‚ Ă?Z : o ĂŒ Ă› Ÿà Ă”\  e Â? ” H— ¸ÂŽ HĂŒ o^ Â? ‰\ ÂŚĂ˜ Τ Ă´ 4 Ç . ĂŤ –€ Ă&#x; •o Â? Ă› Ÿà Ă” q # Qe Ăœ ” Ÿ€ “List is empty.â€?\ ÂŚĂ˜ ÂŚ Ă´ 4 § Ç . sB j™ èĂ— ÂźÂ? Hn ! Q^

` ç ÂŚ3 q& l Ăœ h Ÿ– Ă?ĂŤ – Ă&#x; 6 xÂ?  a ) .

4

PreLab • <` ĂŒ Â…s t \  e Â? ” H list.zip` ÂŚ ĂŽ r~ ĂŽ Ăƒ ArrayLinkedList 9 tA Ăž Ă› Âź\ ÂŚ Âœ5 Š q~ Ă… ĂŽÂ? Ăƒ H UnsortedArrayLinkedList\ ÂŚ a$ ¢

Ă­ . • ¢ a$

Ă­ € TestList.java\ ÂŚ s6 x  # ÂŒ½ ¨Â‰ Âł_ & &

S ù ‰$ X

` í ŒS ‰ X “ .

5

InLab • ArrayLinkedList Ăž t 9A Ă› Âź\ ÂŚ Âœ5 Š q~ Ă… ĂŽÂ? Ăƒ H SortedArrayLinkedList\ ΢ a$

Ă­ .

2


6

PostLab • PreLab\ " f½ ¨ ³ô & Ç UnsortedArrayLinkedList\ o Û ¼à Ô\ ¦% í i HÜ ¼ Ð Ë ¨ H 6 §B £ j è× ¼\ ¦Æ Ò # . – void reverse() • b 9 ÐZ : \ Ì 6 O § £ • 9 b ÐZ : Ì oÛ ¼à Ô_ í H" f\ ¦% í i HÜ ¼ Ð õ H . o Û ¼à Ô\ ¦% í i HÜ ¼ Ð Ë ¨ H ‫כ‬ rß É ¼> ¿ º t ~ ÓZ ½ Ü O ¼ н Éà + ºe . H ¸× ¼[ t_ þ ` ¦ Ë ¨# Q% í i HÜ ¼ Ð Ë ¨ H s ‫כ‬ ¦, r É H rÕ É ª@ / ÐÄ »t ¦? /6 x` ¦ Ë ¨ H s ‫כ‬ . s z ´_ v\ þ " f H ` ¦ Ë ¨ # Q% í i HÜ ¼ Ð Ë ¨ Hj B è× ¼\ ¦½ ¨ ³K & r : .

3


c °2005, sangjin@kut.ac.kr

Ä ¬Ë ìÍ æ P ò Laboratory 8. BinarySearchTree ADT

1

×X Ò Ä ì • ½ ¨ ¸\ ¦ s6 xô Çs Ò oà Ôo ADT\ ¦½ ¨ ³K & r : .

2

4 ~ ¿ • s Ò oà Ô o H s Ò ol Z _ O ´ òÖ ¦$

` í ¦Õ ª@ / ÐX <s ' ½ ¨ ¸ Ð p · s ‫כ‬ . • s Ò oà Ôo _ y ¸ × ¼ Hþ j@ /¿ º> h_ d ¸× ¼\ ¦ | 9 à ºe Ü ¼9, y ¸× ¼\ ½ É{ + © a° ) ‫ כ‬ ú r É ¢ aA , ¤" á f Ú Ôà Ôo \ e H ¸× ¼[ t_ þ ú ‫כ‬ ° Ð Hß ¼ ¦, ¸ rA É ¤" á fÚ Ôà Ôo \ e H ¸× ¼[ t_ þ ° ‫ כ‬ ú Ð H . • \ " f H £ § 6õ ° ú r? É / Ò9 tA þ Û ¼ Ðs Ò oà Ôo _ ¸× ¼\ ¦ è qà ­ ºe . protected class BSTNode{ public Object info; public BSTNode left; public BSTNode right; }

3

BinarySearchTree ADT • ½ ¨$

‫כ‬ í ¹ è: BSTNode { 9 _ ¸× ¼[ t þ • ½ ¨ ¸: y ¸× ¼[ t þ rs É Ò oà Ôo \ ¦½ ¨$

ô í Ç . y ¸× ¼ Hþ j@ /¿ º> h_ d ¸× ¼\ ¦ | à 9 ºe Ü ¼9, y ¸ × ¼\ ½ É{ + © av ) ú ‫כ‬ ° r É ¢ aA , ¤" á fÚ Ôà Ôo \ e H ¸× ¼[ t þ _v ° ‫ כ‬ ú Ð Hß ¼ ¦, ¸ rA É ¤" á fÚ Ôà Ôo \ e H ¸× ¼[ t_ þ v ° ‫ כ‬ ú Ð H . • í ß – l rÒ : t$ q

í : BinarySearchTree() • Ö ³ ÐZ : Ì s Ò oà Ôo \ ¦Ò t$ q

ô í Ç . – void insert(Object item) • b 9 ÐZ : item!=null, item instanceof Comparable Ì • Ö ³ ÐZ : Å Ì Ò# Q D h‫כ‬ ¹ è\ ¦s Ò oà Ôo \ ¶ { ú ô 9 Ç . ë ß ° ú rv É \ ¦ t H ¸× ¼ rF > ª¸ Õ × ¼_ ¹ ‫ כ‬ èü <D h‫כ‬ ¹ è\ ¦ §^ ô Ç . – boolean delete(Object item) b 9 ÐZ : item!=null, isEmpty()!=false, item instanceof Comparable Ì • Ö ³ ÐZ : Å Ì Ò# Q ‫כ‬ ¹ èü <° ú rv É ° ‫`כ‬ ú ¦ t H‫כ‬ ¹ è à Ôo \ e Ü ¼ Õ ª‫כ‬ ¹ è\ ¦ ] j ¦ true\ ¦ • ͨ ø ì ô 8 Ç . ì Í@ ø / ÐÅ Ò# Q ‫כ‬ ¹ è à Ôo \ \ Ü O ¼ false\ ¦ì ͨ ø ô 8 Ç . Vü @ • \ – TreeUnderflowException: à Ôo q # Qe Ü ¼ µ ÏÒ 1 t q – boolean search(Object item) • b 9 ÐZ : item!=null, isEmpty()!=false, item instanceof Comparable Ì Ö ³ ÐZ : Å Ì Ò# Q ‫כ‬ ¹ èü <° ú rv É ° ‫`כ‬ ú ¦ t H‫כ‬ ¹ è à Ôo \ e Ü ¼ true\ ¦ì ͨ ø 8 ¦Õ ªX t O · § ú • ¼ Ü false\ ¦ì ͨ ø ô 8 Ç . • \ Vü @ 1


– TreeUnderflowException: Ă Ă”o q # Qe Ăœ ” Ÿ€ Âľ Ă?Ă’ 1 t q – Object retrieve(Object item) • b ‚ 9 Ă?Z : item!=null, isEmpty()!=false, item instanceof Comparable ĂŒ Ă– ³‚ Ă?Z : Ă… ĂŒ Ă’# Q ” ‍כ‏ šÂ™ èß <°  Â“ Ăş rv É ° ‍`כ‏ Ăş ÂŚ t Â? H‍כ‏ šÂ™ è Ă Ă”o \  e Ăœ ” Ÿ€ Ă• ª‍כ‏ šÂ™ è\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . ĂŹ Ă?@ ø /– Ă? • Ăœ O \ Ÿ€ null\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . • \ VĂź @ – TreeUnderflowException: Ă Ă”o q # Qe Ăœ ” Ÿ€ Âľ Ă?Ă’ 1 t q – void clear() • Ă– ³‚ Ă?Z : Ă” ĂŒ Ă o \  e Â? ” H— ¸ÂŽ H” ¸Ă— Âź\ ÂŚ] j Ă´ Ç . – boolean isEmpty() Ă– ³‚ Ă?Z : Ă” ĂŒ Ă o q # Qe Ăœ ” Ÿ€ true\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚĂ• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . • – boolean isFull() • Ă– ³‚ Ă?Z : † ĂŒ Ă“ ½ ÂœĂƒ Š Ă? ‚. – void showStructure() • b ‚ 9 Ă?Z : \ ĂŒ 6 O § ÂŁ • Ă– ³‚ Ă?Z : Ă ĂŒ Ă”o \  e Â? ” H— ¸ÂŽ HĂŒ o^ Â? ‰\ ÂŚĂ— ĂŚ0 AĂ­ H r~ Ă“Z ½ Ăœ O Ÿ– Ă?Ă˜ Τ Ă´ 4 Ç . ĂŤ –€ Ă&#x; •à Â? Ă”o q # Qe Ăœ ” Ÿ€ “Tree is empty.â€?\ ÂŚĂ˜ Τ Ă´ 4 Ç . s B j™ èĂ— ÂźÂ? Hn ! Q^

` ç ÂŚ3 q& l Ăœ h Ÿ– Ă?ĂŤ – Ă&#x; 6 xÂ?  a ) .

4

PreLab • < ĂŒ` Â…s t \  e Â? ” H lab08.zip` ÂŚ ĂŽ r~ ĂŽ Ăƒ BinarySearchTree.java\ ΢ a$

Ă­ . j™ èĂ— Ÿ× ĂŚ\  6 §j ÂŁ B™ è[ tĂŤ Ăž – prelabĂœ Ă&#x; Ÿ– Ă?¢ a$

Ă­ . • B public int iterSize(); public boolean iterSearch(Object item); public boolean delete(Object item); • iterSizeÂ? HF ) ~ Ă“Z ½ ` O ÂŚ 6 x  t ¡ §Â“ Ăş ÂŚĂ Ă”o _ e Â? ” H” ¸Ă— Âź_ > hĂƒ Âş\ ÂŚ> Ă­ – Ă&#x; Â? HB j™ èĂ— Âźs . s B j™ èĂ— ÂźÂ? H Ă› Ÿ× ˜` Ăž ÂŚ 6 x  9, [ jĂ´ Ç/ ?6 x“  rs É Â? r” : ¸à Ă”\ Œ‚ Ă?› Ăƒ ¸. • iterSearchÂ? HF ) ~ Ă“Z ½ ` O ÂŚ 6 x  t ¡ §Â“ Ăş ÂŚĂ… Ă’# Q ” ‍כ‏ šÂ™ èß <°  Â“ Ăş rv É ° ‍`כ‏ Ăş ÂŚ t Â? H‍כ‏ šÂ™ è Ă Ă”o \  e Â? ” Ht ÂŽ # ÂŒĂ… Ă’Â? HB j™ èĂ— Âźs . [ jĂ´ Ç? /6 x“  rs É Â? r” : ¸à Ă”\ Œ‚ Ă?› Ăƒ ¸. • deleteÂ? HĂ… Ă’# Q” v° ‍`כ‏ Ăş ÂŚ ” ‍כ‏ šÂ™ è\ Œš Ă” 1 Ă• ª” ¸Ă— Âź\ ÂŚ • ÂŒ] jK Ă… Ă’Â? HB j™ èĂ— Âźs . delete B j™ èĂ— ÂźÂ? H¢ a$

á Ă­ & # Qe t ” ĂŤ –Õ Ă&#x; ÂŞ? /Ă‚ Ă’\  " f  x 6 Â? H deleteNodeĂź < getPredecessorÂ? H½ ¨Â‰ ³á & &# Qe t ” ¡ § Ăş . s Âż Âş? /Ă‚ Ă’B j ™ èĂ— Âź\ ΢ a$

Ă­ . deleteNodeÂ? H •] ÂŒ j½ ɔ + ¸Ă— Âź\ Œš ԓ 1 r É ÂœI Š \  " fĂ• ª” ¸Ă— Âź\ ÂŚ •] ÂŒ j Â? HB j™ èĂ— Âźs . ĂŤ –€ Ă&#x; • Â? • ÂŒ ] j½ ɔ + ¸Ă— Âź ¢ aA , ¤, š ĂĄ ¸Â? rA É ¤ ĂĄ d ” ” ¸Ă— Âź\ Œ— ¸¿ Âş t “ ÂŚe Ăœ ” Ÿ€ ¢ aA , ¤" ĂĄ fĂš Ôà Ôo \  " f  ÂœH Š ° ‍`כ‏ Ăş Œš Ă” 1 Ă´ Ç . s ` ‍כ‏ Œš Ă” 1 Ă… Ă’Â? HB j™ èĂ— Âź getPredecessors . • ¢ a$

Ă­ € TestBST.java\ ÂŚs 6 x  # ÂŒ½ ¨Â‰ Âł_ & &

S ù ‰$ X

` í ŒS ‰“ X . Ž 7 xÀ å Ó insert search delete delete delete

5

"§

ĂŽ

ĂŽ +n +b +c +e +f +q +o +z ?z -n -c -z

l @ /& á� H þ

q “ ÂŚ iterSearch ÂŽ d s ” — ¸¿ Âşe Â? ” H” ¸Ă— Âź_ •] ÂŒ j d s ” ĂŤ –e Ă&#x; Â? ” H” ¸Ă— Âź_ •] ÂŒ j –´ Ă&#x; ĂŠ ˜” Ăş ¸Ă— Âź_ •] ÂŒ j

InLab 1. ” Ă’ ÂŽ oĂ Â? Ă”o _ — ¸_ v“ Ăž ry É •‍כ‏ ÂŒ šÂ™ è\ ÂŚÂś š{ Ăş 9 Â? HĂ­ H" f\  _ K &

Â? Ăą a ) . ĂŤ –€ Ă&#x; •& Â?

§ Ăą =Â? > aĂ­ ) H" f– Ă?Âś š{ Ăş 9 ½ É +

Ă„ â Âş\  Â? H • s Ă Ă”o _ Z }s ‍כ‏ šÂ™ è_ > hĂƒ ºÍ – Ă&#x; p uá &Â? HÂź † # Ă“s ž ” Ă Ă”o á &# QB Ă„ Âşq ´ òĂ– ÂŚ& s h . Âź † # Ă“s ž ” Ă Ă”o Â? H‚ + Aƒ Ăž ½ ¨Â› ¸ß < s \ O . s \ ÂŚ> h‚ l 0 AK Ă Ă”o _ ç H+ A` Ăž Ϋ Â?Æ Ăş Ă’Â? H~ Ă“Z ½ ` O ÂŚĂ’ ty q •½ ÂŒ Ă‰Ăƒ + Âşe ” . s \ ÂŚ0 AĂ´ Ç 6 § ÂŁ B j™ èĂ— Âź\ ΢ a$

Ă­ r š ¸. [ jĂ´ Ç? /6 x“  rs É Â? r” : ¸à Ă”\ Œ‚ Ă?› Ăƒ ¸. 2


– public void BalanceTree() • Ă– ³‚ Ă?Z : Ă” ĂŒ Ă o ¢ a„ s ” Ă Ă”o (complete binary tree) á &• ¸2 ¤à Â&#x; Ă”o \ ÂŚF ½ ¨$

Ă´ Ă­ Ç . • ¢ a$

Ă­ € TestBST.java\ ÂŚs 6 x  # ÂŒ½ ¨Â‰ Âł_ & &

S ù ‰$ X

` Ă­ ÂŚS ‰“ X . s M : ‘B’ "

§ Î

` Î Œ 6 xô  Ç .

6

InLab 2. • Ă€ Òà Ԕ ¸Ă— ÂźÂ? HĂ” Ă o Y Uš 6 \ 0\  e ” “ ÂŚ 9, Ă€ Òà Ԕ ¸Ă— Âź_ d “ ” rY É Uš 6 \ 1\  e ” “ ÂŚĂ´ Ç . 7 ¤, ” ÂŁ ¸Ă— Âź_ Y Uš 6 \“ rĂ€ É Ă’Ă Ă” \  " f” ¸Ă— Âź t _ a AĂ&#x; Âź_ Ăƒ Âş\ Ϋ Â˜Ă´ Ăş Ç . Ă Ă”o _ Z }s Â? HĂŠ –ú Ă&#x; ˜ ´Â” ¸Ă— Ÿ× ĂŚ\  Y Uš 6 \s  Âœ Š H” ¸Ă— Âź_ Y Uš 6 \` Ϋ Â˜Ă´ Ăş Ç . • Ă Ă”o _ ‰ ÂłF & Z }s Ă Ă”o _ ‰ ÂłF & ” ¸Ă— Âź\ ÂŚs 6 x  # ÂŒ¢ a„ s ” Ă Ă”o \ ÂŚĂŤ –[ Ă&#x; t% Ăž ` 3 ÂŚM :_ Z }s Ăź <´ §Â“ Ăş r É s e ” Ăœ Ÿ€ Ă’ ÂŽ o½ Â? ÉM + :´ òĂ– ÂŚs b # Â? Q” . – public int height() Ă– ³‚ Ă?Z : Ă” ĂŒ Ă o _ Z }s \ ÂŚ> Ă­ – Ă&#x; # ÂŒĂŹ Ă?¨ ø Šô 8 Ç . • Ă Ă”o _ Z }s Â? HĂ€ Òà Ԕ ¸Ă— Âź_ ¢ aA , ¤" ĂĄ fĂš Ôà Ôo _ Z }s Ăź <š ¸Ă‰ r Â?A ¤" ĂĄ fĂš Ôà Ôo _ Z }s Ă— ĂŚ HA ¤_ ĂĄ Z }s +1s Â? a ) . • ¢ a$

Ă­ € TestBST.java\ ÂŚs 6 x  # ÂŒ½ ¨Â‰ Âł_ & &

S ù ‰$ X

` Ă­ ÂŚS ‰“ X . s M : ‘H’ "

§ Î

` Î Œ 6 xô  Ç .

7

PostLab a$

Â? Ă­ a BinarySearchTree.java\ ) ÂŚs 6 x  Â? Hç –Ê Ă&#x; –ô Ă&#x; Ç6 x6 ÂŁ x  Œ `½ ¨Â‰ Âł & . • ¢ • t F K t Â? HĂŠ –í Ă&#x; H > &

Ăƒ Ăą º° ‍כ‏¢ Ăş ¸Â? HĂŤ H ° ‍`כ‏ Ăş Œ” ¸Ă— Âź_ ° â€Ť×›â€ŹĂœ Ăş Ÿ– Ă? 6 x  % i . z ´] j6 x6 ÂŁ x\   " fÂ? Hs ˜ Ă? Â? H4 ¤¸ Â&#x; š Ăş ÇX Ă´ <s ' \ ÂŚ 6 x  > Â? a ) . r postlab\  " fÂ? H 6 §þ ÂŁ °  Â“ Ăş rY É UÂ? ĂŻĂ— Âź\ ÂŚ&

_ Ăą # ÂŒs Y UÂ? ĂŻĂ— Âź\ ÂŚs ” Ă’ ÂŽ o Â? Ă Ă”o \  œ š{ Ăş 9 “ ÂŚ •] ÂŒ jK ‘ r : . s M : A 9 tA Ăž Ă› Âź\ ÂŚ 6 x  t ´ ˜“ Ăş ÂŚ, Ă› ŸÛ Ÿ– Ă?1 q‚ l Ă“& ½ h “ 9 tA Ăž Ă› Âź\ ÂŚĂŤ –[ Ă&#x; t# Ăž Q 6 x  K ‘ r : . public class NBAPlayer implements Comparable{ int backNumber = -1; String name; String team; public NBAPlayer(){} public NBAPlayer(int id, String n, String t){ backNumber = id; name = n; team = t; } public int compareTo(Object target){ NBAPlayer tmp = (NBAPlayer)target; if(this == target) return 0; return (this.name.compareTo(tmp.name)); } public String toString(){ return ("#"+backNumber+"\tName: "+name+"\tTeam: "+team); } } s 9 tA Ăž Ă› Âź\ ÂŚÂś ˜( Ăş R˜ Ă?€ q “ §½ ÉM + : name\ ÂŚs 6 xĂ´  Ă‡ . " fs

Ă„ â ÂşY UÂ? ĂŻĂ— Âź_ v ° ‍כ‏s Ăş names Â? a ) “ Œ½ Ă‰Ăƒ + Âş e ” . v ° ‍כ‏s Ăş ĂŞ Ă? ø Ă’ ÂŽ o½ Â? ÉM + :l ĂŻ rs á &Â? H° ‍`כ‏ Ăş Ϋ Â˜ Ăş 9, ĂŤ –Â? Ă&#x; • €v ° ‍`כ‏ Ăş ÂŚh >" Ă‹

Ăœ ĂŽ Ÿ– Ă? Ă‹ ¨Â“ ÂŚz ¡Ăœ Ÿ€ compareTo B j ™ èĂ— Âź\ ÂŚĂƒ Âş&

Ăą # ÂŒ~ > 1 Ăœ JĂƒ ĂŁ Âşe ” . • y • ÂŒ 1 q‚ l Ă“& ½ h “ 9 tA Ăž Ă› Âź\ ÂŚĂŤ –[ Ă&#x; t“ Ăž ÂŚ NBAPlayerTest.javaĂź <Ă„ Âť Ă´ Ç9 tA Ăž Ă› Âź\ ÂŚĂŤ –[ Ă&#x; t# Ăž QĂŤ –Ž Ă&#x; H9 tA Ăž Ă› Âź_ “ Ă› Ÿ‡ Ă› Âź[ t Ăž ÂŚÂś ` š{ Ăş 9 “ ÂŚ •] ÂŒ j Â? H ` ‍כ‏ ÂŚ ÂŽ Ă´ Ç .

3


c °2005, sangjin@kut.ac.kr

Ä ¬Ë ìÍ æ P ò Laboratory 9. AVLTree ADT

1

×X Ò Ä ì • AVL à Ôo \ ¦½ ¨ ³K & r : .

2

4 ~ ¿ • s Ò oà Ôo _ ¸_ v þ r É ¸× ¼[ ts þ ¶ { ú 9 aí ) H" f\ _ K &

ñ a ) . " f¶ { ú 9 aí ) H" f\ B Ä º¼ # Ó| ¾ c ¨ à ºe . s ` ‫כ‬ ¦F G4 ¤ l A 0K à Ôo _ ç H+ A` þ ¦´ Ø ú ¦Ã ºe t ë q ß 6 xs B Ä ºq Hë H] j& s h e . • AVL à Ôo H Ó ½ à © Ôo _ Z }s þ j ès Ò oà Ôo _ Z }s ü < H] X ¸2 ¤Ä »t ÷ & Hà Ôo s . AVL à Ôo Hs \ ¦0 AK y ¸× ¼ Õ ª _ ‫כ‬ ¢ aA , ¤" á fÚ Ôà Ôo _ Z }s ü < ¸ rA É ¤" á fÚ Ôà Ôo _ Z }s _ s \ ¦Ä »t ô Ç . s ° ‫`כ‬ ú ¦ç H+ A þ à º(balance factor) ô Ç . " f AVL à Ôo H 6 §õ £ ° ú r? É / Ò9 tA þ Û ¼\ ¦s 6 x # y ¸× ¼ ¦ \ è qà ­ ºe . protected class AVLTreeNode{ public Object info; public AVLTreeNode left; public AVLTreeNode right; public int balanceFactor; } • AVL à Ôo \ " f ¸× ¼\ ¦¶ { ú 9 ¢ ¸ H ] jô ÇÊ ê\ H¶ { ú 9 a¢ ) ¸ H ] j a ) ¸× ¼_ Â Ò ¸ ¸× ¼Â Ò' À Òà Ô ¸× ¼ t _ t þ Q` ¦ " fç H+ A þ à º° ‫`כ‬ ú ¦ ¸&

K ñ ô Ç . " fÂ Ò ¸ ¸× ¼\ @ /ô Ç s 9 ‫כ‬ ¹ . s \ ¦0 AK Â Ò ¸ ¸× ¼\ @ /ô Ç ` ¦ ¸× ¼\ ¦ ? / H&

ñ Ð\ Æ Ò ½ ÉÃ + ºe t ë Ä ß »t K H&

ñ Ð 7 x ÷ £ &Ù ¼ Ðy 7 x á [ ß í ts þ 4 ¤¸ K ú t Hë H] j& s h e . s ` ‫כ‬ ¦F G4 ¤ Hô Ç t ~ ÓZ ½ O r¶ É { ú ¢ 9 ¸ H ] j l 0 AK ¶ { ú 9 0 Au ¢ ¸ H ] j½ É + ¸× ¼\ ¦¹ Ô 1 ° M ú :Û ¼× \ þ ~ Óë ½ Hô Ç ¸× ¼[ t` þ ¦ push H s ‫כ‬ . s X > O Û ¼× _ þ top\ H Ó ½ © ³ & F ¸× ¼_ Â Ò ¸ ¸× ¼ $ ÷ © &# Qe > a ) . s z ´_ v\ þ " f Hs ~ ÓZ ½ ` O ¦ 6 xô Ç . • Ð [ jô Ç? /6 x rs É r : ¸à Ô\ ¦ Ð Ã ¸.

3

AVLTree ADT • AVLTreeNode { _ 9 ¸ × ¼[ t þ • ½ ¨ ¸: s Ò oà Ôo ü <° ú . ë y ß ¸× ¼_ ç H+ A þ à º° ‫כ‬s ú 0, 1, ¢ ¸ H -1 Ð Ó ½ Ä © »t a ) . – l rÒ : t$ q

í : AVLTree() • ³ Ö ÐZ : Ì AVL à Ôo \ ¦Ò t$ q

ô í Ç . – void insert(Object item) • b Ð 9 Z : item!=null, item instanceof Comparable Ì • Ö ³ ÐZ : Å Ì Ò# Q D h‫כ‬ ¹ è\ ¦ AVL à Ôo \ ¶ { ú ô 9 Ç . • \ Vü @ – UnsupportedOperationException: ° ú rv É \ ¦ t H ¸× ¼ rF > µ ÏÒ 1 t q – boolean delete(Object item) • b Ð 9 Z : item!=null, isEmpty()!=false, item instanceof Comparable Ì • Ö ³ ÐZ : Å Ì Ò# Q ‫כ‬ ¹ èü <° ú rv É ° ‫`כ‬ ú ¦ t H¹ ‫ כ‬ è à Ôo \ e Ü ¼ Õ ª‫כ‬ ¹ è\ ¦ ] j ¦ true\ ¦ ͨ ø ì ô 8 Ç . ì Í@ ø / ÐÅ Ò# Q ‫כ‬ ¹ è à Ôo \ \ Ü O ¼ false\ ¦ì ͨ ø ô 8 Ç . 1


– – – –

4

• V \ü @ – TreeUnderflowException: à Ôo q # Qe Ü ¼ µ ÏÒ 1 t q boolean search(Object item) • b 9 ÐZ : item!=null, isEmpty()!=false, item instanceof Comparable Ì • Ö ³ ÐZ : Å Ì Ò# Q ‫כ‬ ¹ èü <° ú rv É ° ‫`כ‬ ú ¦ t H‫כ‬ ¹ è à Ôo \ e Ü ¼ true\ ¦ì ͨ ø 8 ¦Õ ªX t O · § ú ¼ Ü false\ ¦ì ͨ ø ô 8 Ç . • \ Vü @ – TreeUnderflowException: à Ôo q # Qe Ü ¼ µ ÏÒ 1 t q Object retrieve(Object item) • b 9 ÐZ : item!=null, isEmpty()!=false, item instanceof Comparable Ì • Ö ³ ÐZ : Å Ì Ò# Q ‫כ‬ ¹ èü <° ú rv É ° ‫`כ‬ ú ¦ t H‫כ‬ ¹ è à Ôo \ e Ü ¼ Õ ª‫כ‬ ¹ è\ ¦ì ͨ ø ô 8 Ç . ì Í@ ø / Ð Ü O \ ¼ null\ ¦ì ͨ ø ô 8 Ç . • \ Vü @ – TreeUnderflowException: à Ôo q # Qe Ü ¼ µ ÏÒ 1 t q void clear() • ³ ÖÐ Z : Ô Ì ào \ e H ¸ H ¸× ¼\ ¦] j ô Ç . boolean isEmpty() • ³ Ö ÐZ : à Ì Ôo q # Qe Ü ¼ true\ ¦ì ͨ ø 8 ¦Õ ªX t O · §Ü ú ¼ false\ ¦ì ͨ ø ô 8 Ç . boolean isFull() • ³ ÖÐ Z : Ì Ó ½ à © Ð . void showStructure() • b 9 ÐZ : \ Ì 6 O § £ • ³ Ö ÐZ : à Ì Ôo \ e H ¸ HÌ o^ \ ¦× æ0 Aí H r~ ÓZ ½ Ü O ¼ ÐØ ¦§ ô 4 Ç . ë ß à Ôo q # Qe Ü ¼ “Tree is empty.”\ ¦Ø ¦§ ô 4 Ç . s B j è× ¼ Hn ! Q^

` ç ¦3 q& l Ü h ¼ Ðë ß 6 x a ) .

PreLab • AVLTree.zip` ¦ î r~ Î Ã ¶ { ú 9 í ` ß ¦¢ a$

í . • ¶ { ú 9 í ` ß ¦½ ¨ ³½ & ÉM + :? / Ò& Ü h ¼ ÐÛ ¼× ` þ ¦ 6 xô Ç . – AVL à Ôo \ D h‫כ‬ ¹ è\ ¦¶ { ú 9 l 0 AK " f H $ ¶ ú 9½ { É + ¸× ¼\ ¦¹ Ô 1 ô Ç . AVL à Ôo \ " fD h‫כ‬ ¹ è H s Ò oà Ôo ü < ð Í t ø Ð Ó ½ é © ´ ß ú ¸× ¼\ Æ Ò a ) . – ¶ { ú 9 | c é ¨ ´ ß ú ¸× ¼\ ¦ ¹ Ô 1 ° M ú :, À Òà Ô Ò' é ´ ß ú ¸× ¼ t

â Ð \ © e H ¸× ¼[ t þ r É Y V@ / Ð Û ¼× \ þ pushô Ç . s Û ¼× þ rÔ É ào _ Ð r! l Q Ð&

_ ñ ÷ &# Qe . – " f¶ { ú 9 ô ÇÊ ê\ Û ¼× ` þ ¦s 6 x # é ´ ß ú ¸× ¼_ Â Ò ¸ ¸× ¼Â Ò' À Òà Ô ¸× ¼ t _ t þ Q` ¦ " fç H A þ + à º\ ¦Ì t q ô Ç . Ò Å_ ½ É& + h r# É Q " ¸× ¼_ ç H+ A þ à º

÷ â &# Q 0s ÷ & Õ ªs Ê ê_ ¸ © ¸× ¼[ t_ þ H+ ç A þ à º H t · § ú H . – ç H+ A þ à º\ ¦Ì t q Hõ &

\ ñ " f% 6 §Ü £ ¼ Ð AVL à Ôo _ $

| í 9 ` ¦0 AC H ¸× ¼\ ¦ë ß à Ôo _ I © \ 9 ‫כ‬ ¹ô Ç r ` ¦ # à Ôo \ ¦F ¸&

ô ñ Ç . s \ ¦0 AK W 1 t r \ ‫כ‬ 9 ¹ô Ç 6 §B £ j è× ¼[ t` þ ¦¢ a$

í Ç ô . AVLTreeNode AVLTreeNode AVLTreeNode AVLTreeNode

LLRotate(AVLTreeNode RRRotate(AVLTreeNode LRRotate(AVLTreeNode RLRotate(AVLTreeNode

Anode, Anode, Anode, Anode,

AVLTreeNode AVLTreeNode AVLTreeNode AVLTreeNode

Bnode); Bnode); Bnode, AVLTreeNode Cnode); Bnode, AVLTreeNode Cnode);

• ¢$ a

í TestAVLTree.java\ ¦s 6 x # ½ ¨ ³_ & &

S ñ $ X

` í ¦S X . s M :y r _ &

S ñ ô X Çt S X l 0 A K 6 §í £ H" f Ð ¸× ¼\ ¦¶ { ú ô 9 Ç . – – – –

LL r : 40 20 10 RR r : 10 20 40 LL r : 40 10 20 LL r : 10 40 20

0 AW 1 t

Ä â º&

S ñ X > ¶ { ú s 9 s À Ò# Qt s r : ¸à Ô\ e H\ V] j\ ¦r + >ô « Ç . 2


5

InLab • ] j í ` ß ¦¢ a$

í . • ] j í ß r¶ É { ú 9 í õ ß ð Í t ø Ð? / Ò& Ü h ¼ ÐÛ ¼× ` þ ¦s 6 xô Ç . s & h rô É Ç r ` ¦ H Ü ‫כ‬ ¼ Ð ] j ¢ a« Ñ÷ &t · § ú ¦> 5 qÒ Å Àà Ô t _ t þ Q` ¦ " f ‫כ‬ 9 ¹ # Q r ` ¦K ô Ç . – ¶ { ú 9 _

Ä â º\ Hç H+ A þ à º° ‫כ‬s ú 1¢ ¸ H −1\ " f 0Ü ¼ Ð 7 Õ ªs Ê ê ¸ © ¸× ¼[ t_ þ ç H+ A þ à º H t · §t ú ë ì ß Í@ ø / Ð ] j\ " f H 0\ " f1¢ ¸ H −1 Ð Õ ªs Ê ê ¸ © ¸× ¼[ t_ þ ç H+ A þ à º H t · § ú H . – ] j H¶ { ú 9 \ " f ¦ 9÷ &% ~ 3 W 1 t r ü @\ : ¤ £ sô Ç

Ä â º e . s  Òì r\ @ /K " f Hs r : ¸× ¼\ ¦ Ð Ã ¸ô Ç . s ` ‫כ‬ ¦ ¦ 9 l 0 AK LLRotateü < RRRotate B j è× ¼\ ¦ 9 ‫כ‬ ¹ à º&

K ñ ô Ç . • ] j a ) ¸× ¼_ Â Ò ¸ ¸× ¼Â Ò' À Òà Ô t _ t þ Q` ¦ ç H+ A þ à º\ ¦ ÐK ô Ç . s M : ] j a ) ¸× ¼ d s Ñ t ü × æç ß ¸× ¼

Ä â º\ Hs ¸× ¼_ Â Ò ¸ ¸× ¼Â Ò' H s ‫כ‬ m ¦, s ¸× ¼\ @ /^ a ) ¸× ¼ _ Â Ò ¸ ¸× ¼Â Ò' K ô Ç . • ] j a ) ¸× ¼_ Â Ò ¸ ¸× ¼_ ç H+ A þ à º\ ¦

â l 0 AK " f H ] j a ) ¸× ¼_ &

ñ Ð 9 ‫כ‬ ¹ . s &

ñ Ð H deletedItems HÐ r! l Q Ã º\ Ä »t a ) . • ¢ a$

í TestAVLTree.java\ ¦s 6 x # ½ ¨ ³_ & &

S ñ $ X

` í ¦S X .

6

PostLab • \ 6 O §. £

3


c °2005, sangjin@kut.ac.kr

„ ę –‰ ÂŹĂ‹ ĂŹĂ? ̛ P ò Laboratory 10. Graph ADT

1

Â? Ă—X Ă’ Ă„ ĂŹ • “ ] o X Ă› Ÿà Ă”~ Ă“Z ½ ` O ÂŚs 6 xĂ´  Ă‡Ă Âş~ ӆ ½ Ă“q ž Ă— ĂŚu Ă• ÂŞA ĂĄ Ă” ADT\ Œ½ ¨Â‰ ÂłK & ‘ r : . • “ ] Â? X ' Â&#x;§ =~ > Ă“Z ½ ` O ÂŚ s6 xĂ´  Ă‡Ă„ Âť~ ӆ ½ Ă“ Ă— ž ĂŚu Ă• ÂŞA ĂĄ Ă” ADT\ ά ½Â‰ ÂłK & ‘ r : .

2

4 ~ Âż • Ă• ÂŞA ĂĄ Ă”Â? H/ N| B ½ 9 Ă‹s + Â? &

& Ăą (vertex)[ h t_ Ăž Ă„ ô Ç| 9 ½ Ă‹Ăľ + s &

& Ăą [ h t` Ăž ÂŚÂƒ Â? Hç –‚ Ă&#x; (edge)Ăœ Ÿ– Ă?½ ¨$

á Ă­ &Â? H ÂŤ Ă‘½ ¨Â› ¸s . • Ă Âş~ ӆ ½ Ă“Ă• ž ÂŞA ĂĄ Ă”(undirected graph)“ rç É –‚ Ă&#x; _ ~ ӆ ½ Ă“$ ž

s Ă­ \ Â? O HĂ• ÂŞA ĂĄ Ă”\ Ϋ Â˜Ă´ Ăş Ç . • “ ] & X

& Ăą (adjacent vertex)s h ĂŞ Ă?ç ø –‚ Ă&#x; \  _ K ƒ á &# Qe Â? ” H&

& Ăą ` h Ϋ Â˜Ă´ Ăş Ç . • Ă• ÂŞA ĂĄ Ă”Â? H˜ Ă?: x Â&#x; “] Â&#x; X '§ Â? =¸ > ¢Â? H“ ] o X Ă› Ÿà Ԗ Ă?Âł ð‰ ³ô & Ç . • “ ] Â? X ' Â&#x;§ =“ > r' É Â?§ Â&#x; =` > ÂŚs 6 x  # ÂŒ&

& Ăą [ h tç Ăž –_ Ă&#x; ç –‚ Ă&#x; ` ÂŚÂł ð‰ Âł & Â? H~ Ă“Z ½ Ăœ O Ÿ– Ă?Ă Âş~ ӆ ½ Ă“Ă• ž ÂŞA ĂĄ Ă”_

Ă„ â Âş\  Â? H ns &

& Ăą h [ t_ Ăž Ăƒ Âş{ 9 M : n2 /2 Ă&#x; Âźl _ ' Â?§ Â&#x; =s > € ‍כ‏ 9 š . • “ ] o X Ă› Ÿà Ă”Â? Hy •& ÂŒ

& ù [ h t Þ Õ ª _ ‍כ‏ “ ] & X

& Ăą [ h t` Ăž ÂŚo Ă› Ÿà Ԗ Ă?Ă„ Âťt Â? H~ Ă“Z ½ ` O Ϋ Â˜Ă´ Ăş Ç . • ˜ Ă? [ jĂ´ Ç? /6 x“  rs É Â? r” : ¸à Ă”\ Œ‚ Ă?› Ăƒ ¸.

3

UndirectedUnweightedListGraph ADT • ½ ¨$

‍כ‏ Ă­ šÂ™ è: &

& Ăą Ăž h t [Ăľ s[ tç Ăž –\ Ă&#x;  ç –‚ Ă&#x; Ăœ Ÿ– Ă?½ ¨$

Â? Ă­ a ) . y •& ÂŒ

h Ăą &“ rĂ• É ÂŞ _ ‍כ‏ Y Us ^ ÂŚs e ” . • ½ ¨Â› ¸: y •& ÂŒ

& ù [ h t Þ “ ] & X

& Ăą [ h t` Ăž ÂŚÂƒ ½ ¨Â› ¸&

§ Ăą =o > Ă› Ÿà Ԗ Ă?Ă„ Âťt 9, y •& ÂŒ

& Ăą [ h t“ Ăž rC É \ – P Ă?Ă„ Âťt Ă´ Ç . protected class Vertex{ public String label; public SortedLinkedList edges; } protected Vertex[] graph; • ƒ Ă­ – Ă&#x; – l ‘ rĂ’ : t$ q

Ă­ : public UndirectedUnweightedListGraph() • Âł ւ Ă?Z : Ăž ĂŒ j@ / DEF_CAPACITYĂŤ – Ă&#x; u& p

& Ăą [ h t` Ăž ÂŚ è qĂƒ ­ Âşe Â? ” H ‘ Ă Âş~ ӆ ½ Ă“Ă• ž ÂŞA ĂĄ Ă”\ ÂŚĂ’ t$ q

Ă´ Ă­ Ç . ‘ ÂŞA Ă• ĂĄ Ă”_ ¨ ½ ¤Â“ ÂĄ r setup() B É j™ èĂ— Âź\ ÂŚs 6 xĂ´  Ă‡ . – public UndirectedUnweightedListGraph(int capacity) • b ‚ 9 Ă?Z : ĂŒ capacity> 0, ĂŤ –€ Ă&#x; • capacity 0 ¢ Â? ¸Â? H6 §Ăƒ ÂŁ Âşs € ĂŠ ê› ¸| “ rl É ‘ rĂ’ : t$ q

Ă­ Ăź <°  ú . • Ă– ³‚ Ă?Z : capacity>0s ĂŒ € Ăž j@ / capacityĂŤ – Ă&#x; u_ p &

& Ăą [ h t` Ăž ÂŚ è qĂƒ ­ Âşe Â? ” H ‘ Ă Âş~ ӆ ½ Ă“Ă• ž ÂŞA ĂĄ Ă” ÂŚĂ’ \ t$ q

Ă­ “ ÂŚ, ÂŞ Ă•X t O ¡ §Ăœ Ăş Ÿ€ Ăž j@ / DEF_CAPACITYĂŤ – Ă&#x; u& p

& Ăą [ h t` Ăž ÂŚ è qĂƒ ­ Âşe Â? ” H‘ Ă Âş~ ӆ ½ Ă“Ă• ž ÂŞA Ă”\ ĂĄ ÂŚĂ’ t$ q

Ă´ Ă­ Ç . ‘ Ă• ÂŞA ĂĄ Ă”_ ½ ¨ ¤Â“ ÂĄ r setup() j É B™ èĂ— Âź\ ÂŚs 6 xĂ´  Ă‡ . – Ă’ t$ q

Ă­ • ¸š §s ÂĄ : void setup(int capacity) – private void insertVertex(String label) 1


• b ‚ 9 Ă?Z : label!=null, isFull()==false ĂŒ • Ă– ³‚ Ă?Z : Ă• ĂŒ ÂŞA ĂĄ Ă”\  Ă… Ă’# Q ” s 2 §_ ÂŁ &

& Ăą ` h ή Ă’ Ă´ Ç . • \ VĂź @: NullPointerException, GraphOverflowException – public void insertEdge(String from, String to) • b Ă? 9 ‚Z : 1) from!=null, 2) to!=null, 3) isEmpty()==false, 4) s ĂŒ 2 §s ÂŁ from“ &

& Ăą Ăľ h s 2 §s ÂŁ to“ &

& Ăą s h e # ” Q † ĂŠ < • Ă– ³‚ Ă?Z : Ă• ĂŒ ÂŞA ĂĄ Ă”\  " fs 2 §s ÂŁ from“ Ăą

&& Ăľ h s 2 §s ÂŁ to“ Ăą

&& ` h ÂŚe Âą Â? Hç –‚ Ă&#x; ` ή Ă’ Ă´ Ç . Ă Âş~ ӆ ½ Ă“ ž ÂŞA Ă• ĂĄ Ă”s Ă™ Ÿ– Ă? s2 §s ÂŁ to“ &

& Ăą Ăľ h s 2 §s ÂŁ from“ &

& Ăą ` h ÂŚe Âą Â? Hç –‚ Ă&#x; • ¸Â† ĂŠa < Â?Æ Ă’ K Ă´ Ç . • \ VĂź @: NullPointerException, GraphUnderflowException – public void removeVertex(String label) • b Ă? 9 ‚Z : 1) label!=null, 2) isEmpty()==false, 3) Ă… ĂŒ Ă’# Q” s 2 §_ ÂŁ &

& Ăą s h ” rF > K † ĂŠ < • Ă– ÂłĂ? ‚Z : ÂŞ ĂŒ Ă•A ĂĄ Ă”\  " fĂ… Ă’# Q” s 2 §_ ÂŁ &

& Ăą ` h ÂŚ] j Ă´ Ç . ] j á &Â? H&

& ù þ h “ ] ô X Ç&

& Ăą ` h ÂŚe Â? Âą H— ¸ Hç ÂŽ –‚ Ă&#x; ` ÂŚj ] K Ă´ Ç . • \ VĂź @: NullPointerException, GraphUnderflowException – public void removeEdge(String from, String to) • b Ă? 9 ‚Z : 1) from!=null, 2) to!=null, 3) isEmpty()==false, 4) s ĂŒ 2 §s ÂŁ from“ &

& Ăą Ăľ h s 2 §s ÂŁ to“ &

& Ăą s h e # ” Q † ĂŠ, 5) s < 2 §s ÂŁ from“ &

& Ăą Ăľ h s 2 §s ÂŁ to“ &

& Ăą ` h ÂŚe Â? Âą Hç –‚ Ă&#x; s ” rF > K † ĂŠ < • Ă– ³‚ Ă?Z : Ă• ĂŒ ÂŞA ĂĄ Ă”\  " fs 2 §s ÂŁ from“ Ăą

&& Ăľ h s 2 §s ÂŁ to“ Ăą

&& ` h ÂŚe Âą Â? Hç –‚ Ă&#x; ` ÂŚ] j Ă´ Ç . Ă Âş~ ӆ ½ Ă“ ž ÂŞA Ă• ĂĄ Ă”s Ă™ Ÿ– Ă? s2 §s ÂŁ to“ &

& Ăą Ăľ h s 2 §s ÂŁ from“ &

& Ăą ` h ÂŚe Âą Â? Hç –‚ Ă&#x; • ¸] j K Ă´ Ç • \ VĂź @: NullPointerException, GraphUnderflowException – public void clear() • Âł Ă–Ă? ‚Z : ÂŞ ĂŒ Ă•A ĂĄ Ă”\  e Â? ” H— ¸ÂŽ H” ¸Ă— Âź\ ÂŚ] j Ă´ Ç . – public boolean isEmpty() • Âł Ă–Ă? ‚Z : ÂŞ ĂŒ Ă•A ĂĄ Ă” q # Qe Ăœ ” Ÿ€ true\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚĂ• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Šô 8 Ç . – public boolean isFull() • Âł Ă–Ă? ‚Z : Ă• ĂŒ ÂŞA ĂĄ Ă”\  8s Âœ& Š

& Ăą ` h ή Ă’ ½ Ă‰Ăƒ + Âş\ Ăœ O Ÿ€ true\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚĂ• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ false\ ÂŚĂŹ Ă? ø Šô 8 ¨ Ç . – public void showStructure() • b ‚ 9 Ă?Z : \ ĂŒ 6 O § ÂŁ • Ă– ³‚ Ă?Z : ĂŤ ĂŒ –€ Ă&#x; •Õ Â? ÂŞA ĂĄ Ă” q # Qe Ăœ ” Ÿ€ “Graph is empty.â€?\ ÂŚĂ˜ Τ 4 “ ÂŚ, Ă• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ y •& ÂŒ

& ù [ h t Þ ª Õ _ ‍כ‏ “] & X

& Ăą ` h ÂŚĂ˜ Τ Ă´ 4 Ç . s B j™ èĂ— ÂźÂ? Hn ! Q^ ç

` ÂŚ3 q& l Ăœ h Ÿ– Ă?ĂŤ – Ă&#x; 6 xÂ?  a ) .

4

PreLab • UndirectedUnweightedListGraphÂ? H UnweightedListGraph` ÂŚ Âœ5 Š q~ Ă… ĂŽ Ăƒ ½ ¨Â‰ ³á & &9, UnweightedListGraph“ r ListGraph É Âœ5 Š q~ Ă… ĂŽ Ăƒ ½ ¨Â‰ ÂłÂ? & a ) .s Â? r” : ¸à Ԃ Ă?› Ăƒ ¸. • y Âœ_ Š < ĂŒ` Â…s t \  e Â? ” H Graph.zip` ÂŚ ĂŽ r~ ĂŽ Ăƒ UndirectedUnweightedListGraph.java\ ΢ a$

Ă­ . • B j™ èĂ— Ÿ× ĂŚ\  removeVertex\ ΢ a$

Ă­ . s M :s Â? r” : ¸à Ă”\  e Â? ” H % ‍כ‏ ƒ! — 3 ¸ÂŽ H&

& Ăą [ h t_ Ăž “ ] o X Ă› Ÿà Ă”\ ÂŚ Ă’ ÂŽ o Â? t ´ ˜“ Ăş ÂŚ, ] j ½ É& +

& Ăą _ h “] o X Ă› Ÿà Ă”\ ÂŚs 6 x  # ÂŒç –‚ Ă&#x; [ t` Ăž ÂŚ] j . • ƒ Ă• ÂŞA ĂĄ Ă”(connected graph)ĂŞ Ă?à ø Âş~ ӆ ½ Ă“Ă• ž ÂŞA ĂĄ Ă”\  " f" f– Ă? Â? r— É ¸ÂŽ HŠ Âœ_ Š &

& Ăą [ h t Ăž s \ Â

– â Ă? ” rF > Â? HĂ• ÂŞ A ĂĄ Ă”s . • # Q‹ ƒ " Ă• ÂŞA ĂĄ Ă”\  " fQ #‹ ç " –‚ Ă&#x; ` ÂŚ] j % ` i ÂŚM :# Œ„ y ƒ Ă• ÂŞA ĂĄ ԓ t ¡ ˜“ Ăş ÂŚz ¡` ÂŚĂƒ Âşe ” . # Q‹ Ă " Âş~ ӆ ½ Ă“ ž Ă• ÂŞA ĂĄ Ă”_ — ¸ÂŽ H&

& Ăą _ h Ăƒ Âş ‹ Â•Ăƒ ÂŒ Âşs € # ÂŒl " f _ ç –‚ Ă&#x; ` ÂŚ] j # Υ ¸# Œ„ y ƒ Ă• ÂŞA ĂĄ Ă” Â? a ) . ĂŹ Ă? ø @ /– Ă? s Âœ_ Š &

& Ăą _ h Ăƒ Âş f Ă‹Ăƒ . Âş “ Ă Âş~ ӆ ½ Ă“Ă• ž ÂŞA ĂĄ Ă”\  " fç –‚ Ă&#x; ` ÂŚ ] j € Ăľ Ă• ÂŞA ĂĄ Ă” ƒ Ă• ÂŞ A ĂĄ Ă” “ t Â? H¡ Â˜Ăƒ Ăş Âş\ O . • Ă• ÂŞA ĂĄ Ă”_ — ¸ÂŽ H&

& Ăą _ h Ăƒ Âş ‹ Â•Ăƒ ÂŒ º“ t ÂŽ Â? H 6 §B ÂŁ j™ èĂ— Âź\ ΢ a$

í . • public boolean allEven()

2


– b ‚ 9 Ă?Z ĂŒ: Ă• ÂŞA ĂĄ Ă” ƒ Ă• ÂŞA ĂĄ Ă”s . – Âł ւ Ă?Z ĂŒ : Ă• ÂŞA ĂĄ Ă”_ — ¸ÂŽ H&

& Ăą [ h t_ Ăž Ăƒ Âş ‹ Â•Ăƒ ÂŒ Âşs € true\ ÂŚĂŹ Ă?¨ ø Š 8 “ ÂŚ, Ă• ÂŞX t O ¡ §Ăœ Ăş Ÿ€ false\ ÂŚĂŹ Ă?¨ ø Š 8 Ç Ă´ . • ¢ a$

Ă­ € TestGraph.java\ ÂŚs 6 x  # ÂŒ½ ¨Â‰ Âł_ & &

S ù ‰$ X

` í ŒS ‰ X “ .

5

InLab • ƒ Ă• ÂŞA ĂĄ Ă”\  " f— ¸ÂŽ H&

& Ăą ` h ÂŚĂ´ Ç m Ă­ ” H r Â? H~ Ă“Z ½ “ O rĂ&#x; É Âź> U ¡s Ă„ º‚ ~ Ă“Z ½ Ăľ O -q Ă„ º‚ ~ Ă“Z ½ s O e ” . U ¡s Ă„ Âş ~ ‚ Ă“Z ½ “ O rĂ´ É ÇA ¤ ĂĄ

– â Ă?\ ÂŚ 8s Âœ° Š Â˜Ăƒ Ăş Âş\ ` O ÂŚM : t € $ „ Ă?Ă’ Ăƒ o Â? Â? H~ Ă“Z ½ s O “ ÂŚ, -q Ă„ º‚ ~ Ă“Z ½ “ O rr É  Â•& ÂŒ

& Ăą h \ Â " f

– â Ă?_ U ´s \ ÂŚ lĂŻ rĂœ Ÿ– Ă?„ Ă?Ă’ Ăƒ o Â? Â? H~ Ă“Z ½ s O . • Âż Âş t ~ Ă“Z ½ Ăœ O Ÿ– Ă?Ă­ H r½ Ă‰Ăƒ + Âşe Â? ” H? /Ă‚ Ă’ĂŹ Ă?4 ø ¤ Â&#x; 9 tA Ăž Ă› Âź\ ΢ a$

Ă­ . protected class GraphIterator implements Iterator{ LinkedQueue traverseQueue; public GraphIterator(int type, String start){ Ăľ } public boolean hasNext() { Ăľ } public Object next() { Ăľ } public void remove() { throw new UnsupportedOperationException; } private void BreadthFirstSearch(int start); private void DepthFirstSearch(int start); } – public GraphIterator(int type, String start) • b ‚ 9 Ă?Z : type“ ĂŒ r Graph.DFS ¢ É ¸Â? H Graph.BFSs # Q 9, start!=nulls # Q Ă´ Ç . ¢ ¸ô Çs 2 § ÂŁ start“ s &

& Ăą h se # ” Q Ă´ Ç . • Ă– ³‚ Ă?Z : ~ ĂŒ Ă“ĂŤ ½ HĂ´ Çí H" f– Ă?&

& Ăą _ h labels enqueue Â? aÇ ) Š\ ÂŚĂŤ –Ž Ă&#x; H . – private void BreadthFirstSearch(int start) – private void DepthFirstSearch(int start) s Ă— ĂŚĂ’ t$ q

Ă­ , BreadthFirstSearch, DepthFirstSearch\ Œ½ ¨Â‰ ÂłK & Ă´ Ç . ¡ ˜“ Ăş ÂŚo 7 §Â“ ÂŁ rs É Â? r” : ¸à Ă”\  [" O

á ĂŽ &# Qe ” . • ¢$ a

Ă­ € TestGraph.java\ ÂŚs 6 x  # ÂŒ½ ¨Â‰ Âł_ & &

S ù ‰$ X

` Ă­ ÂŚS ‰ X “ . s M : ‘B’ "

§ Î

# ĂŽ Q< Ăź ‘D’ "

§ Î

# Î Q\ Œ 6 xô  Ç .

6

PostLab • “ ] Â? X ' Â&#x;§ =` > ÂŚs 6 x  # ÂŒĂ„ Âť~ ӆ ½ Ă“ Ă— ž ĂŚu Ă• ÂŞA ĂĄ Ă” ADT“ MatrixGraph` ΢ a$

Ă­ . – “ ] Â? X ' Â&#x;§ =` > ÂŚs 6 xĂ´  Ă‡Ă Âş~ ӆ ½ Ă“Ă• ž ÂŞA ĂĄ Ă”Â? H 6 §þ ÂŁ °  Â“ Ăş rl É r Ă?! Q Ăƒ Âş\ ÂŚs 6 xĂ´  Ă‡ . protected String[] graph; protected int[][] adjMatrix; graphÂ? H&

& Ăą Ăž h t [_ label` ÂŚĂ„ Âťt Â? Ho Ă› Ÿà Ă”s “ ÂŚ, adjMatrixÂ? Hç –‚ Ă&#x; [ t` Ăž ÂŚĂ„ Âťt Â? H “ ] ' X Â?§ Â&#x; =– > Ă?" f, adjMatrix[i][j] ° ‍כ‏s Ăş -1s € s 2 §s ÂŁ vertexList[i]“ &

& Ăą Ăľ h s 2 §s ÂŁ vertexList[j]“ &

Ăą & ` h ÂŚe Âą Â? Hç –‚ Ă&#x; s \ O Â? H ` ‍כ‏ ÂŚ p ¡ . • DirectedWeightedMatrixGraph“ r WeightedMatrixGraph` É ÂŚ Âœ5 Š q~ Ă… ĂŽ Ăƒ ½ ¨Â‰ ³á & &9, WeightedMatrixGraph“ r MatrixGraph É Âœ5 Š q~ Ă… ĂŽ Ăƒ ½ ¨Â‰ ÂłÂ? & a ) . • InLabĂľ Ă° Ă? t ø – Ă?Ă­ H r\ Œ½ ÉM + : 6 x  Â? H? /Ă‚ Ă’ĂŹ Ă?4 ø ¤ Â&#x; 9 t ĂžA Ă› Âź\ ΢ a$

Ă­ .

3


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.