Issuu on Google+

c °2005, sangjin@kut.ac.kr

„  ę –‰ Ë Ï�  ̛ P  ò Laboratory 1. Logbook ADT

1

� ×X Ò Ä Ï •   \  " f 6 x   &

_ Ăą Ă&#x2019; Ă&#x2020; Â&#x153;X Š <s '  { (abstract data type)\ 9 Œ½  ¨Â&#x2030; ÂłK & Â&#x2018; r : . â&#x20AC;˘ java.util J v t \  e Â? Â&#x201D; H GregorianCalendar 9  tA Ăž Ă&#x203A; Âź\ ÂŚ  6 xK   Â&#x2018; r : . â&#x20AC;˘ B jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚ overloading  Â? H~  Ă&#x201C;Z ½ ` O ÂŚÂ&#x2020;  Ă&#x2020;_ < vĂ´ Ăž Ă&#x2021;  .

2

4 ~ Âż â&#x20AC;˘  4ĂŠ Z Â&#x2013;0 Ă&#x; AÂ&#x2013; Ă?Ă&#x2022; ÂŞÂĄ ¤ ¡(monthly logbook)s ĂŞ Ă? ø 4_ Z y Â&#x2022;Âą Â&#x152; Â&#x2DC; Ăş    _ ° â&#x20AC;Ť`×&#x203A;â&#x20AC;Ź Ăş ÂŚÂ&#x192;  Â&#x203A;  ar ' ~ ´Ă&#x192;  Âşe Â? Â&#x201D; H  ÂŤ Ă&#x2018;½ ¨Â&#x203A; ¸s  . V) y Â&#x2022;Âą Â&#x152; Â&#x2DC; Ăş   Â&#x2019;   &x ĂŻ Â&#x2013;_ Ă&#x; Ă&#x192; Âş â&#x20AC;&#x201C; \ â&#x20AC;˘ Â&#x201E; +  A& Ăž  h Â&#x201C; Â&#x2013; Ă?Ă&#x2022; ÂŞÂĄ ¤ ¡_ ¸ Â&#x2014;_ vÂ&#x201C; Ăž r Ă&#x2030; 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 â&#x20AC;˘ ½ ¨$

â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Ă­ šÂ&#x2122; è 4ĂŠ Z Â&#x2013;0 Ă&#x; AÂ&#x2013; Ă?Ă&#x2022; ª¡ ¤` ÂĄ ÂŚ0  AĂ´ Ă&#x2021;& 

Ă&#x192; Ăą º° â&#x20AC;Ť[×&#x203A;â&#x20AC;Ź Ăş t_ Ăž | 9 ½ Ă&#x2039;Ăľ + Â&#x2013; Ă?Ă&#x2022; ª¡ ¤þ ÂĄ Â&#x203A; aÂş ' Â?  a² ) Â&#x2DC;§ Ăş  4 â&#x20AC;&#x201C;  â&#x20AC;˘ Ă? Â&#x2013;ÂŞ Ă&#x2022;¡ ¤: int[] entry = new int[31]; ÂĄ â&#x20AC;˘ Â&#x2013; Ă?ÂŞ Ă&#x2022;¡ ¤_ ÂĄ  4& Z

Â&#x2DC; Ăą Ă?: int logMonth â&#x20AC;˘ Â&#x2013; Ă?ÂŞ Ă&#x2022;ÂĄ ¡_ ¤ ¸ & 

Â&#x2DC; Ăą Ă?: int year â&#x20AC;&#x201C; y Â&#x2022;& Â&#x152;

Ă&#x192; Ăą º° â&#x20AC;ŤÂ&#x201C;×&#x203A;â&#x20AC;Ź Ăş rĂ&#x2026; Ă&#x2030; Ă&#x2019;# Q Â&#x201D;  4_ Z : ¤& ÂŁ

Âą Ăą Â&#x2DC;\ Ăş  K { Â&#x153; Š Â? HÂ&#x2020;  Ă&#x201C;s ½  . â&#x20AC;&#x201C; Â&#x2013; Ă?Ă&#x2022; ª¡ ¤\ ÂĄ  e Â? Â&#x201D; HÂ&#x2020;  Ă&#x201C;_ ½ Ă&#x192; ÂşÂ? HĂ&#x2026;  Ă&#x2019;# Q Â&#x201D;  4\ Z     Ă&#x2DC; Ă&#x201D; . â&#x20AC;˘ Â&#x192; Ă­  Â&#x2013; Ă&#x; â&#x20AC;&#x201C; Ă&#x2019; t$ q

 Ă­ : public Logbook(int month, int year) b Â&#x201A; 9 Ă?Z : 1 â&#x2030;¤monthâ&#x2030;¤ 12 Ă&#x152; â&#x20AC;˘  â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : monthĂź Ă&#x152; < year ° â&#x20AC;Ť\×&#x203A;â&#x20AC;Ź Ăş    Â&#x2018; Â&#x2013;  Ă?Ă&#x2022; ª¡ ¤` ÂĄ ÂŚĂ&#x2019;  t$ q

Ă´ Ă­ Ă&#x2021;  . Â&#x2018; Â&#x2013;  Ă?Ă&#x2022; ª¡ ¤s ÂĄ ĂŞ Ă?Â&#x2013; ø Ă?Ă&#x2022; ª¡ ¤_ ÂĄ Â&#x2014; ¸Â&#x17D; HÂ&#x2020;  Ă&#x201C;_ ½ ° â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Ăş ÂŚ 0Ă&#x153;  ` ÂźÂ&#x2013; Ă?Â&#x153; Ă­l  o  Â? H  ` â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Ϋ  Â&#x2DC;Ă´ Ăş Ă&#x2021;  . Ă&#x201E; ´ ò t ¡ §Â&#x201C; Ăş r month ° Ă&#x2030; â&#x20AC;Ť\×&#x203A;â&#x20AC;Ź Ăş  @ /K " fÂ? HÂ&#x2030;  ÂłF &  4(Â&#x161; Z ¸Z tÂą Ăž Â&#x2DC; Ăş )\  { K Â&#x153; Š Â? HĂ?  Â&#x2013;Ă&#x2022; ª¡ ¤` ÂĄ ÂŚĂ&#x2019;  t$ q

Ă´ Ă­ Ă&#x2021;  . Ă&#x201C;Ă&#x2020; ½ Ă&#x2019;: public void putEntry(int day, int value) â&#x20AC;&#x201C; Â&#x2020; b Â&#x201A; 9 Ă?Z : 1 â&#x2030;¤dayâ&#x2030;¤daysInMonth Ă&#x152; â&#x20AC;˘  â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2019; Ă&#x152; Ă&#x2026;# QÂ&#x201D; Âą  Â&#x2DC;\ Ăş  K { Â&#x153; Š Â? HÂ&#x2020;  Ă&#x201C;\ ½  value ° â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Ăş` ÂŚ$   Â&#x153;Ă´ Š Ă&#x2021;  . Ă&#x201C;\ ½ | P Ă?: public int getEntry(int day) Ă&#x192; â&#x20AC;&#x201C; Â&#x2020; â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : 1 â&#x2030;¤dayâ&#x2030;¤daysInMonth Ă&#x152;

1


â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2026; Ă&#x152; Ă&#x2019;# QÂ&#x201D; Âą  Â&#x2DC;\ Ăş  K { Â&#x153; Š Â? HÂ&#x2020;  Ă&#x201C;° ½ â&#x20AC;Ť`×&#x203A;â&#x20AC;Ź Ăş ÂŚĂŹ  Ă?¨ ø Â&#x160; 8   Ă&#x2026; Ă&#x2019;# Q Â&#x201D; Âą Â&#x2DC;s Ăş Ă&#x201E; ´ ò t ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC;  â&#x2C6;&#x2019;1`  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  .  â&#x20AC;&#x201C; public int month() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : \ Ă&#x152; 6 O § ÂŁ â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă? Ă&#x152; Â&#x2013;Ă&#x2022; ª¡ ¤_ ÂĄ  4& Z

Â&#x2DC; Ăą Ă?\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; public int year() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : \ Ă&#x152; 6 O § ÂŁ â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă? Ă&#x152; Â&#x2013;Ă&#x2022; ª¡ ¤_ ÂĄ ¸ Â&#x2022;  ¸&

Â&#x2DC; Ăą Ă?\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; public int daysInMonth() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : \ Ă&#x152; 6 O § ÂŁ Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Â&#x2013; Ă&#x152; Ă?Ă&#x2022; ª¡ ¤_ ÂĄ  4\ Z  8 xÂą Ăş Â&#x2DC;Ă&#x192; Ăş Âş\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . daysInMonth(int month) B jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚs  6 xĂ´   Ă&#x2021;  . â&#x20AC;˘  â&#x20AC;&#x201C; public int daysInMonth(int month) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : 1 â&#x2030;¤monthâ&#x2030;¤ 12 Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă? Ă&#x152; Â&#x2013;Ă&#x2022; ª¡ ¤_ ÂĄ  4\ Z  8 xÂą Ăş Â&#x2DC;Ă&#x192; Ăş Âş\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  .  Â&#x201E; Â&#x203A;  ¸| \  0 AC á &Â&#x20AC;  â&#x2C6;&#x2019;1\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; private boolean isLeapYear() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : \ Ă&#x152; 6 O § ÂŁ â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă? Ă&#x152; Â&#x2013;Ă&#x2022; ª¡ ¤_ ÂĄ ¸ Â&#x2022;  ¸ ĂŽ r¸  s  Â&#x20AC;  true\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚ,  m Â&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  .

4

PreLab â&#x20AC;˘ y Â&#x153;_ Š < Ă&#x152;` Â&#x2026;s t  \" f Logbook.java\ ÂŚ  ĂŽ r~  Ă&#x17D; Ă&#x192; ¢ a$

í  . ¢ a$

K Ă­   Â? HB  jÂ&#x2122; èĂ&#x2014; ÂźÂ? H  6 §þ ÂŁ °   Ăş . â&#x20AC;&#x201C; public Logbook(int month, int year) â&#x20AC;&#x201C; public int getEntry(int day) â&#x20AC;&#x201C; private boolean isLeapYear() â&#x20AC;˘ ½ ¨Â&#x2030; Âłr & Ă&#x201E; Âť_  Â&#x2020; Ă&#x201C; ½ Â&#x201E; Â&#x203A;  ¸| [ t` Ăž ÂŚ   Â&#x17D; K   9,  Â&#x201E; Â&#x203A;  ¸| ` ÂŚĂŤ  Â&#x2013;7 Ă&#x; ¤ ĂĄ t 3 w l Â&#x20AC; Â&#x161;  ¸Ă&#x20AC; Ă&#x201C;B jr t \ ÂŚÂł  Ă°ĂŻ rĂ&#x2DC;  Τ  Ă&#x153; 4 ÂźÂ&#x2013; Ă?Ă&#x2DC; Τ   4  . â&#x20AC;&#x201C;  \ 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; } â&#x20AC;&#x201C; q Ă&#x2019;$ t

 Ă­ \ Œ½  ¨Â&#x2030; ³½ & Ă&#x2030;M + :Ă&#x2026; Ă&#x2019;# Q Â&#x201D;  4& Z

Â&#x2DC; Ăą Ă?  Â&#x201E; Â&#x203A;  ¸| ` ÂŚĂ&#x2DC;  ĂŚ7  ¤ ĂĄ t ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC;  GregorianCalendar_   get B j Â&#x2122; èĂ&#x2014; Âź\ ÂŚs  6 x   # Â&#x152;Â&#x2030; ÂłF &  4Ăľ Z ¸ Â&#x2022;  ¸&

Â&#x2DC; Ăą Ă?\ ÂŚ%  # 3 Q Logbook_ Ă? r! l Q Ă&#x192;  Âş[ t` Ăž ÂŚÂ&#x153;  Ă­l  oĂ´ Ă&#x2021;  . s M : get B jÂ&#x2122; è Ă&#x2014; ÂźÂ? H 1  4` Z ÂŚ 0, . . ., 12  4Â&#x201C; Z r 11Â&#x2013; Ă&#x2030; Ă?ĂŹ Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  Â? H  ` â&#x20AC;Ť×&#x203A;â&#x20AC;Ź ÂŚĂ&#x201E;  Âť _K  Ă´ Ă&#x2021;  . â&#x20AC;&#x201C; GregorianCalendar\ ÂŚ  6 x   l 0 AK " fÂ? H java.util.GregorianCalendar`  ÂŚ importK   Ă´ Ă&#x2021;   . ¢ ¸ô Ă&#x2021; get B  jÂ&#x2122; èĂ&#x2014; Âź_  Â&#x201C;   Â&#x2013; Ă?  6 xá   &Â? H #  Â&#x152; Q  Â&#x153;Âş Š Ă&#x192;[ tÂ&#x201C; Ăž r Calendar 9 Ă&#x2030; tA Ăž Ă&#x203A; Âź\  &

_ Ăą á &# Q e Ă&#x153; Â&#x201D; ÂźĂ&#x2122; ÂźÂ&#x2013; Ă? java.util.CalendarÂ&#x2022; ¸ importK  Ă´ Ă&#x2021;  . â&#x20AC;&#x201C; isLeapYear() B jÂ&#x2122; èĂ&#x2014; ÂźÂ? H GregorianCalendar_   isLeapYear B jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚ  6 xĂ´   Ă&#x2021;  . â&#x20AC;˘ ¢ a$

` Ă­ ÂŚ  Â&#x20AC;   6 § Study 9 ÂŁ tA Ăž Ă&#x203A; Âź\ ÂŚs  6 x   # Â&#x152;_ Â&#x2026;Ă&#x203A; Ÿà Ă&#x201D;Ă´ Ă&#x2021;  . 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

â&#x20AC;˘ Test1 9 tA Ăž Ă&#x203A; Âź\ ÂŚ Study 9  tA Ăž Ă&#x203A; Ÿß <Ă&#x201E; Âť  > ĂŤ Â&#x2013;[ Ă&#x; t# Ăž Q 6 §° ÂŁ â&#x20AC;Ť[×&#x203A;â&#x20AC;Ź Ăş t` Ăž ÂŚĂ&#x2DC;  Τ   4 # Â&#x152;½ ¨Â&#x2030; Âłs & ` ÂŚ  Ă&#x2DC; Ă&#x201D;> á &% Â? 3 Ht  S Â&#x2030;Â&#x201C; X   Ă&#x2021;  Ă´ . _ Â&#x2026;Ă&#x203A; Ÿà Ă&#x201D; Â&#x2013;Ă­ Ă&#x; ĂŠ H²  Â&#x2DC; Ăş  Ăľ  p A  ÂłF & Â&#x2030;  2 4(ĂŽ Z r¸  s    Â? 

Ă&#x201E; â Âş) 2 4(ĂŽ Z r¸  )  Ă&#x201E; ´ ò t ¡ §Â&#x201C; Ăş r² Ă&#x2030; Â&#x2DC; Ăş

  Â&#x17D; ² Â&#x2DC; Ăş 2004.1. 2002.6. 2005.3.

² Â&#x2DC;_ Ăş Âą Â&#x2DC;Ă&#x192; Ăş Âş 31

s  Â&#x153;Ă&#x201E; Š à º

1997.2. 2004.2. 2002.13.

Ă&#x160;r < ` ÂŚ  Â? rĂş Ă&#x2030; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź °s Ă&#x2DC; Τ  á 4 &t ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC; Â&#x161;  ¸Ă&#x20AC; Ă&#x201C;\ Œš  Ă&#x201D; 1 Ă&#x192; Âş&

Ă´ Ăą Ă&#x2021;  .

5

In-Lab â&#x20AC;˘  6 §B ÂŁ jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚ Logbook 9  tA Ăž Ă&#x203A; Âź\  Ă&#x2020; Ă&#x2019;  . â&#x20AC;&#x201C; void displayCalendar() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : \ Ă&#x152; 6 O § ÂŁ â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z :  Ă&#x152; 6 §þ ÂŁ °  Â&#x201C; Ăş r+ Ă&#x2030; AI Ăž Â&#x2013; Ă?Â&#x2013; Ă?Ă&#x2022; ª¡ ¤` ÂĄ ÂŚĂ&#x2DC;  Τ  Ă´ 4 Ă&#x2021;  . 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\ Œ½  ¨Â&#x2030; Âł & l 0 AK " fÂ? HĂ&#x2026;  Ă&#x2019;# QÂ&#x201D; ²  Â&#x2DC; Ăş_ '  Ă? P  :Âą Â&#x2DC;_ Ăş â&#x20AC;Ť×&#x203A;â&#x20AC;Ź š{ 9 ` Œ¡  Â&#x2DC; Ăş  Ă´ Ă&#x2021;  . s \ ÂŚ0  AK   6 §þ ÂŁ °  Â&#x201C; Ăş rB Ă&#x2030; jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚÂ&#x20AC;  $  ½ ¨Â&#x2030; ³ô & Ă&#x2021;  . â&#x20AC;&#x201C; int dayOfWeek(int day) b Â&#x201A; 9 Ă?Z : 1 â&#x2030;¤dayâ&#x2030;¤daysInMonth Ă&#x152; â&#x20AC;˘  â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2019; Ă&#x152; Ă&#x2026;# QÂ&#x201D; Âą  Â&#x2DC;_ Ăş â&#x20AC;Ť×&#x203A;â&#x20AC;Ź š{ 9 ` ÂŚ   ? /Â? H& 

Ă&#x192; Ăą Âş\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . 0Ă&#x201A; Ă&#x2019;'  6 t _ &

Ă&#x192; Ăą º° â&#x20AC;Ť`×&#x203A;â&#x20AC;Ź Ăş ÂŚ  6 x   9, 0Â&#x201C; r Ă&#x2030; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź 9 { š{ ` 9 ÂŚ, 1Ă&#x201A;  Ă&#x2019;'  6Â&#x201C; r Ă&#x2030; 4â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Z š{ Ă&#x201A; 9 Ă&#x2019;' Â&#x17E; Ă?â&#x20AC;Ť×&#x203A;â&#x20AC;Ź š{ ` 9 ÂŚ  Y VÂ&#x2013; Ă?  p  ¡ . $  Â&#x20AC;  set` ÂŚs  6 x   # Â&#x152;Ă? r! l Q Ă&#x192;  Âş logCalendar Ă&#x2026; Ă&#x2019;# Q Â&#x201D; Âą Â&#x2DC;` Ăş ÂŚ o  v Â&#x2022; ¸2 ¤[ Â&#x; & O

Ă´ Ăą Ă&#x2021;  . Ă&#x2022; ÂŞ 6 §\ ÂŁ  get` ÂŚ  s 6 x   # Â&#x152;â&#x20AC;Ť×&#x203A;â&#x20AC;Ź š{ 9 ` Œ¡  Â&#x2DC; Ăş p  ¡ . s M : getÂ&#x201C; r 1Ă&#x201A; Ă&#x2030; Ă&#x2019;'  7 t _ ° â&#x20AC;Ť`×&#x203A;â&#x20AC;Ź Ăş ÂŚĂŻ  r  Â? H  \ â&#x20AC;Ť×&#x203A;â&#x20AC;Ź  Ă&#x201E; Âť_ K  Ă´ Ă&#x2021;  . tA Ăž Ă&#x203A; Âź\ ÂŚ Study 9  tA Ăž Ă&#x203A; Ÿß <Ă&#x201E; Âť  > ĂŤ Â&#x2013;[ Ă&#x; t# Ăž Q 6 §° ÂŁ â&#x20AC;Ť[×&#x203A;â&#x20AC;Ź Ăş t` Ăž ÂŚĂ&#x2DC;  Τ   4 # Â&#x152;½ ¨Â&#x2030; Âłs & ` ÂŚ  Ă&#x2DC; Ă&#x201D;> á &% Â? 3 Ht   â&#x20AC;&#x201C; Test2 9 Â&#x2030; X S Â&#x201C; Ă´ Ă&#x2021;  .

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

Â&#x201E;  Ă&#x201E;Â&#x2122; Â&#x2013;Â&#x2030; ÂŹĂ&#x2039; ĂŹĂ?  ĂŚÂ&#x203A; P  ò Laboratory 2. String ADT

1

Â? Ă&#x2014;X Ă&#x2019; Ă&#x201E; ĂŹ â&#x20AC;˘    s Ă&#x161; Ă&#x201D; Q o\  " f] j/ N B Â? H String 9  tA Ăž Ă&#x203A; Âź_ ĂŠ Â&#x2013;& Ă&#x; ` h Œ¡  Â&#x2DC; Ăş Â&#x2018; r : . tA Ăž Ă&#x203A; Âź\ ÂŚS  Â&#x2030; X Â&#x153;K Š Â&#x2018; r : . â&#x20AC;˘ String 9

2

4 ~ Âż â&#x20AC;˘  ĂŤ H \ Â&#x201C; P rĂĄ Ă&#x2030; Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞA b ç

½ Ă&#x2030;M + :  Â&#x153;´ Š §s Ăş  6 x   Â? H  { Ă&#x2014; 9 ĂŚ   s  .   \  Â? HĂŤ  H  \  P { 9 s Â&#x201D; rF >  t ĂŤ Â&#x2013;& Ă&#x;

Ăą Ă&#x192; Âş\ ÂŚ  Ă&#x2019; ÂŚM  : 6 x   Â? H intĂź  <°  Â&#x201C; Ăş r Ă&#x2030; { 9 s 2 §s ÂŁ    ^ Â&#x2030;\  Â? H\   O . @ /Â&#x2019; \   Í H  \ Âź P o #  > % Â&#x192;o ½ Ă&#x2030;Ă&#x192; + Âşe  Â&#x201D; Â&#x2022; ¸2 ¤ Strings Â&#x;  Â? H9  tA Ăž Ă&#x203A; Âź \ ÂŚ   s Ă&#x161; Ă&#x201D; Qo \ ÂŚ:  xK Â&#x; ] j/ NĂ´ B Ă&#x2021;  . â&#x20AC;˘ StringÂ&#x201C; r9 Ă&#x2030; tA Ăž Ă&#x203A; Âźs Ă&#x2122; ÂźÂ&#x2013; Ă?" Âśr ĂŠ  { 9 ` ÂŚ  Ă&#x20AC; Ă&#x2019;Â? H  Ăľ â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Â? H  6 § ÂŁĂľ °  Â&#x201C; Ăş r Ă&#x2030; s & s h e  Â&#x201D; . â&#x20AC;&#x201C;  ĂŤ H \ Â&#x201C; P r Ă&#x2030;q Â&#x201C; §Â&#x192; Ă­  Â&#x2013; Ă&#x; \ ÂŚs  6 x   # Â&#x152;q Â&#x201C; §½ Ă&#x2030;Ă&#x192; + Âş\ Â&#x201C; O ÂŚ, String 9 tA Ăž Ă&#x203A; Âź\  " f] j/ N B Â? H  6 §¿ ÂŁ ÂşB jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚ  s 6 x   # Â&#x152;q Â&#x201C; §K  Ă´ Ă&#x2021;  . â&#x20AC;˘ boolean equals(Object other) â&#x20AC;˘ int compareTo(String other) ĂŤ H \ _ P ? /6 xÂ&#x201C;   r Ă&#x2030;  

½ â Ă&#x2030;Ă&#x192; + Âş\  O . 7 ¤, String 9 ÂŁ tA Ăž Ă&#x203A; Âź_  Â&#x201C; Ă&#x203A; ÂźÂ&#x2021; Ă&#x203A;  ÂźÂ? HĂ´  Ă&#x2021;  ?  /Ă&#x201A; Ă&#x2019; Â&#x153;I Š \ ÂŚ[  & O

Ăą Â&#x20AC; Ă&#x2022;  ÂŞ Â&#x153; Š â&#x20AC;&#x201C;  I \ ÂŚÂ   

½ â Ă&#x2030;Ă&#x192; + Âş\ Â? O H¡   ÂŁ >[ o cW Ă&#x2039; Â&#x2026;(immutable object)s  . s M :ĂŤ H\   Í H  \ _ P ? /6 x`   ÂŚĂ&#x192;  Âşr Â&#x2013; Ă?  

K â    ´  Â&#x20AC; òĂ&#x2013; ÂŚ$ 

s Ă­ b # Â? QÂ&#x201D;   .   " fĂŤ H  \ _ P ? /6 x`   ÂŚĂ&#x192;  Âş rÂ&#x2013; Ă?  

K â   � H 

Ă&#x201E; â Âş\  Â? H String 9  tA Ăž Ă&#x203A; ÂźÂ&#x2DC; Ă?  H StringBuffer 9  Â? tA Ăž Ă&#x203A; Âź\ ÂŚ  6 x   Â? H  s â&#x20AC;Ť×&#x203A;â&#x20AC;Ź  8 | Ă?f Ă&#x192;  Â&#x201D;  . â&#x20AC;&#x201C;   \  " fĂ&#x152; o^ Â? Â&#x2030;Â? HÂ&#x2DC;  Ă?: x new Â&#x192; Â&#x; Ă­  Â&#x2013; Ă&#x; \ ÂŚs  6 x   # Â&#x152;Ă&#x2019; t$ q

K Ă­   t ĂŤ Â&#x2013; String 9 Ă&#x; tA Ăž Ă&#x203A; ÂźÂ? H\  VĂź @& Ă&#x153; h ÂźÂ&#x2013; Ă? 6 x   t ¡ Ăş §Â&#x201C; ÂŚĂ&#x2019; t$ q

½ Ă­ Ă&#x2030;Ă&#x192; + Âşe  Â&#x201D; . String name = "Sangjin Kim"; â&#x20AC;˘ â&#x20AC;?Sangjin Kimâ&#x20AC;?Ă&#x153; ÂźÂ&#x2013; Ă?Â&#x153; Ă­l  oÂ? a name Ă&#x152; ) o^ Â? Â&#x2030;\   Â? rĂŤ Ă&#x2030; H  \ ` P ÂŚ@  /{ 9  Â&#x20AC; l  Â&#x201D; r â&#x20AC;?Sangjin Kimâ&#x20AC;? ĂŤ > H  \ Â&#x201C; P r garbage Ă&#x2030; collection_ @ / Â&#x153;s Š Â? a ) . â&#x20AC;˘ String 9 tA Ăž Ă&#x203A; ÂźÂ? HÂŞ  Ă&#x2022; _ â&#x20AC;Ť×&#x203A;â&#x20AC;Ź  ´ Us \ ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â? H length()  Â? HB  jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚ]  j/ NĂ´ B Ă&#x2021;  .

3

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

â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Ă­ šÂ&#x2122; è: ĂŤ H  _ | ½ 9 Ă&#x2039; + â&#x20AC;˘ ½ ¨Â&#x203A; ¸: ĂŤ H  \ ` P Œ½  ¨$

Ă­ Â? HĂŤ  H  Â? HÂ&#x201A;  +  AĂ­ Ăž H"  f\ ÂŚ Â&#x201D;    . ĂŤ H  _ 0 Au Â? H 0Ă&#x201A;  Ă&#x2019;' r  Â&#x2022;Â? Â&#x152; a ) . â&#x20AC;˘ Â&#x192; Ă­  Â&#x2013; Ă&#x; â&#x20AC;&#x201C; l Â&#x2018; rĂ&#x2019; : t$ q

 Ă­ : String() â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : / Ă&#x152; ?6 xs    Â&#x2018; D h String Ă&#x152; o^ Â? Â&#x2030;\ ÂŚĂ&#x2019;  t$ q

Ă´ Ă­ Ă&#x2021;  . t$ q

 Ă­ : String(char[] charSeq) â&#x20AC;&#x201C; Ă&#x2019; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2019; Ă&#x152; Ă&#x2026;# QÂ&#x201D; ĂŤ  H  \ ` P ÂŚ o  v Â? H String Ă&#x152;  o^ Â? Â&#x2030;\ ÂŚĂ&#x2019;  t$ q

Ă´ Ă­ Ă&#x2021;  . â&#x20AC;&#x201C; Ă&#x2019; t$ q

 Ă­ : String(String str) â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2026; Ă&#x152; Ă&#x2019;# QÂ&#x201D;  String Ă&#x152;  o^ Â? Â&#x2030; strĂľ ? /6 xs   °  Â&#x201C; Ăş rĂŤ Ă&#x2030; H  \ ` P ÂŚ o  v Â? HD  hÂ&#x2013; Ă?ĂŽ rĂ&#x152;  o^ Â? Â&#x2030;\ ÂŚĂ&#x2019;  t$ q

Ă´ Ă­ Ă&#x2021;  . h\ D v>  Ă&#x2019; t$ q

Â? Ă­ aĂ&#x152; ) o^ Â? Â&#x2030;Â? Hl  Â&#x201D; r strĂľ > ? /6 xs   °  t Ăş ĂŤ Â&#x2013;" Ă&#x; fÂ&#x2013; Ă? Â? r4 Ă&#x2030; ¤ Â&#x; Â&#x2018; r` : ÂŚ o  v Â&#x201C; ÂŚe  Â&#x201D; . 1


â&#x20AC;&#x201C; char charAt(int n) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : 0â&#x2030;¤n<length() Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : n Ă&#x152; P  :ĂŤ H  \ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;˘ \ VĂź @: StringIndexOutOfBoundsException â&#x20AC;&#x201C; ĂŤ H  \ q P Â&#x201C; §: int compareTo(String str) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : str!=null Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z :   Ă&#x152; ĂąĂ&#x2DC; ÂŚÂ?  aĂ&#x152; ) o^ Â? Â&#x2030;_ ĂŤ H  \ ? P /6 xs    Â&#x201E; Ă­  H"  f\  " f strÂ&#x2DC; Ă? ¡ ÂĄ\ Ăş  e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC; 6  §Ă&#x192; ÂŁ Âş\ ÂŚ, °   Ă&#x153; Ăş ÂźÂ&#x20AC;  0`  ÂŚ,  '\ +  e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC; Â&#x20AC;  Â&#x153;Ă&#x192; ÂŞ Âş\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . VĂź @: NullPointerException â&#x20AC;˘ \ â&#x20AC;&#x201C; boolean equals(String rightstr) â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z :   Ă&#x152; ĂąĂ&#x2DC; ÂŚÂ?  aĂ&#x152; ) o^ Â? Â&#x2030;_ ĂŤ H  \ ? P /6 xs    rightstr Ă&#x152; o^ Â? Â&#x2030;_ ĂŤ H  \ ? P /6 xĂľ   °  Ă&#x153; Ăş ÂźÂ&#x20AC;  true\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  .  â&#x20AC;&#x201C; String substring(int start) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : 0 â&#x2030;¤start<length() Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : start 0 Ă&#x152; Au Ă&#x201A; Ă&#x2019;' l Â&#x201D; rĂŤ > H  \ = P Q ĂĽ t Â&#x2013; Ă?½ ¨$

Â? Ă­ aD ) h String Ă&#x152; o^ Â? Â&#x2030;\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;˘ \ VĂź @: StringIndexOutOfBoundsException â&#x20AC;&#x201C; String substring(int start, int end) b Â&#x201A; 9 Ă?Z : 0 â&#x2030;¤start<length(), end<length(), start<end Ă&#x152; â&#x20AC;˘  â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : start 0 Ă&#x152; Au Ă&#x201A; Ă&#x2019;'  end-1 t Â&#x2013; Ă?½ ¨$

Â? Ă­ aD ) h String Ă&#x152; o^ Â? Â&#x2030;\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;˘ \ VĂź @: StringIndexOutOfBoundsException â&#x20AC;&#x201C; int indexOf(int ch) â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2019; Ă&#x152; Ă&#x2026;# QÂ&#x201D; ĂŤ  H   ch   ĂąĂ&#x2DC; ÂŚÂ?  aĂ&#x152; ) o^ Â? Â&#x2030;_ ĂŤ H  \ \ P  " f% Â&#x192;6 §Ă&#x153; ÂŁ ÂźÂ&#x2013; Ă?1 x p Â&#x153; Š Â? H0  Au \ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . Ă&#x2026; Ă&#x2019; QÂ&#x201D; # ĂŤ  H   ĂŤ H  \ \ P  1 x p Â&#x153; Š t ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC;  â&#x2C6;&#x2019;1`  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; int indexOf(int ch, int start) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : 0 â&#x2030;¤start<length() Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2026; Ă&#x152; Ă&#x2019;# QÂ&#x201D; ĂŤ  H   ch   ĂąĂ&#x2DC; ÂŚÂ?  aĂ&#x152; ) o^ Â? Â&#x2030;_ ĂŤ H  \ \ P  " f% Â&#x192;6 §Ă&#x153; ÂŁ ÂźÂ&#x2013; Ă?1 x p Â&#x153; Š Â? H0  Au \ ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â? HX  <  Â&#x17D; o` Â? Ă&#x2019; ÂŚ%  Â&#x192;6 §Ă&#x201A; ÂŁ Ă&#x2019;'  t ¡ §Â&#x201C; Ăş ÂŚ start 0 Au Ă&#x201A; Ă&#x2019;' Ă´ Ă&#x2021;  . Ă&#x2026; Ă&#x2019;# Q Â&#x201D; ĂŤ H   ĂŤ H  \ \ P  1 x p Â&#x153; Š t ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC;  â&#x2C6;&#x2019;1`  ÂŚ  Ă?¨ ø ĂŹ Â&#x160;Ă´ 8 Ă&#x2021;  .

4

PreLab â&#x20AC;˘ < Ă&#x152;` Â&#x2026;s t \  Ă&#x2019; Ă&#x2026;# QÂ&#x201D;  TestString 9  tA Ăž Ă&#x203A; Âź\  l Â&#x201D; r String ADT\ > ÂŚs  6 x   # Â&#x152; 6 §B ÂŁ jÂ&#x2122; èĂ&#x2014; Âź[ t` Ăž Œ½  ¨Â&#x2030; Âł & # Â&#x152; . â&#x20AC;&#x201C; static void showStructure(String str) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : str!=null Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : ĂŤ Ă&#x152; H  \ \ P  Â&#x; Ă­Â&#x2020; Ă&#x160;Â? < aĂŤ ) H  \ ÂŚ   m  Â&#x201D; Y VĂ? Â&#x2013;Ă&#x2DC; Τ  Ă´ 4 Ă&#x2021;  . jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚs  6 x   # Â&#x152;½ ¨Â&#x2030; ³ô & Ă&#x2021;  . â&#x20AC;˘ charAt B â&#x20AC;&#x201C; static boolean lessThan(String leftstr, String rightstr) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : leftstr!=null, rightstr!=null Ă&#x152; Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2026; Ă&#x152; Ă&#x2019;# Q Â&#x201D; Âż ºÍ H  \ ` P ÂŚq  Â&#x201C; § # Â&#x152; leftstrs  rightstrÂ&#x2DC; Ă?  Â&#x201E; Ă­  H"  f Â&#x153;¡ Š ÂĄ\ Ăş  e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;   â&#x20AC;˘  true\ ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚ, °   Ăş  + '\  e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚs  6 x   # Â&#x152;½ ¨Â&#x2030; ³ô & Ă&#x2021;  . â&#x20AC;˘ compareTo B â&#x20AC;&#x201C; static boolean greaterThan(String leftstr, String rightstr) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : leftstr!=null, rightstr!=null Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2026; Ă&#x152; Ă&#x2019;# Q Â&#x201D; Âż ºÍ H  \ ` P ÂŚq  Â&#x201C; § # Â&#x152; leftstrs  rightstrÂ&#x2DC; Ă?  Â&#x201E; Ă­  H"  f Â&#x153;+ Š '\  e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;   true\ ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚ, °   Ăş  ¡ ÂĄ\ Ăş  e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚs  6 x   # Â&#x152;½ ¨Â&#x2030; ³ô & Ă&#x2021;  . â&#x20AC;˘ compareTo B â&#x20AC;&#x201C; static int strCharCount(String inputstr, char ch) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : inputstr!=null Ă&#x152; 2


â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2019; Ă&#x152; Ă&#x2026;# QÂ&#x201D;  inputstr\   " f ch ĂŤ H   1 x p Â&#x153; Š Â? H  rĂ&#x192; Âş\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;˘ indexOf B jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚs  6 x   # Â&#x152;½ ¨Â&#x2030; ³ô & Ă&#x2021;  . â&#x20AC;&#x201C; static String findSubstring(String inputstr, int start, int count) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : 0 â&#x2030;¤start<inputstr.length(), count>0, Ă&#x152; start+count<inputstr.length(), inputstr!=null â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : inputstr\ Ă&#x152;  " f startĂ&#x201A; Ă&#x2019;'  count ĂŤ Â&#x2013; Ă&#x; p u_ ĂŤ H  Â&#x2013; Ă?½ ¨$

Â? Ă­ aD ) hĂ&#x152; o^ Â? Â&#x2030;\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  .  Â&#x201E;   ¸| Â&#x203A; \  A 0C á &Â&#x20AC; &  ] h Ă´ X Ă&#x2021;Ă&#x201A;  Ă&#x2019;ĂŹ rĂŤ  H  \ ` P ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . 7 ¤, start 0Â&#x2DC; ÂŁ Ă?  Â&#x2022;Ă&#x153; Â&#x152; ÂźÂ&#x20AC; 0°  â&#x20AC;Ť×&#x203A;â&#x20AC;ŹĂ&#x153; Ăş ÂźÂ&#x2013; Ă?[ & O

Ăą Â&#x201C; ÂŚ, start+count>inputstr.length()s Â&#x20AC;  startĂ&#x201A;  Ă&#x2019;' ĂŤ H  \ = P Q ĂĽ t Â&#x2013; Ă?½ ¨$

Â? Ă­ aĂ&#x201A; ) Ă&#x2019;ĂŹ rĂŤ  H  \ ` P ÂŚ  Ă?¨ ø ĂŹ Â&#x160;Ă´ 8 Ă&#x2021;  . jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚs  6 x   # Â&#x152;½ ¨Â&#x2030; ³ô & Ă&#x2021;  . â&#x20AC;˘ subString B

5

In-Lab 1 â&#x20AC;˘ ĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞA b

Â? ç ĂŻĂ&#x2014; Âź\ ÂŚ(  

Â&#x17D; {  9 l 0 AK " fÂ? HĂĄ  Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A;Â? Ăž ĂŻĂ&#x2014; Âź\ ÂŚĂŹ  r$  ½ 3 Ă&#x2030;Ă&#x192; + Âşe # Â&#x201D; Q Ă´ Ă&#x2021;  . ĂŹ r$  ` 3 ÂŚ  l 0 AK " fÂ? H  ĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A;` Ăž ÂŚÂ?  Ho 7 & ĂŠ h Â&#x2013;0 Ă&#x; AÂ&#x201C; Ă?  Â&#x17E; HĂ&#x153;  ÂźÂ&#x2013; Ă?Ă&#x201E; ÂşÂ&#x201A;   ž Âş# Q Ă´ Ă&#x2021;  . \ V) if(grade >= 90) return â&#x20AC;&#x2122;Aâ&#x20AC;&#x2122;; 0 AĂź <°  Â&#x201C; Ăş r Ă&#x2030;  Â? ĂŻĂ&#x2014; Âź e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC; (  

Â&#x17D; {  9 QÂ? HĂ&#x201E;  ÂşÂ&#x201A; s  Â? ĂŻĂ&#x2014; Âź\ ÂŚ  6 §þ ÂŁ °  Â&#x201C; Ăş rÂ&#x17E; Ă&#x2030; Ă? HĂ&#x153;  ÂźÂ&#x2013; Ă?½ ¨Ï rĂ´  Ă&#x2021;  . "if", "(", "grade", ">=", "90", ")", "return" "â&#x20AC;&#x2122;", "A", "â&#x20AC;&#x2122;", ";" â&#x20AC;˘   \  " fÂ&#x17E; Ă? H  _ĂŹ ro  Â? H java.io J  v t \  e Â? Â&#x201D; H StringTokenizer 9  tA Ăž Ă&#x203A; Âź\ ÂŚs  6 x½   Ă&#x2030;Ă&#x192; + Âşe  Â&#x201D; . Ă?H ` ÂŚĂŹ  ro   l Â&#x201E; \   

{ ¢ 9 ¸Â? Hv  Â&#x2DC; Ă?Ă&#x2014; ÂźÂ&#x2013; Ă?Ă&#x201A; Ă&#x2019;' ĂŹ ro  ½ Ă&#x2030;/ + ?6 x`   ÂŚ~  Ă&#x17D; Ă&#x192;   9, v Â&#x2DC; Ă?Ă&#x2014; Ÿ¢ ¸Â? H

 { 9 Â&#x2013; Ă?Ă&#x201A; Ă&#x2019;' X <s  â&#x20AC;˘ Â&#x17E; ' \ ÂŚ{  9 ` ÂŚM  :\  Â? H InputStreamReader 9  tA Ăž Ă&#x203A; Âź\ ÂŚ  6 xĂ´   Ă&#x2021;  . InputStreamReader reader = new InputStreamReader(System.in); §Â&#x201C; Ăş rX Ă&#x2030; <s ' \ ÂŚ{  9 # Q ½ Ă&#x2030; +

Ă&#x201E; â Âş\  Â? H!  Q( a A` ÂŚ  6 x   Â? H BufferedReader 9  tA Ăž Ă&#x203A; Âź\ ÂŚ  6 x   Â? H  s â&#x20AC;Ť×&#x203A;â&#x20AC;Ź  | Ă?f Ă&#x192;  Â&#x201D; â&#x20AC;˘ ´  . BufferedReader bufReader = new BufferedReader(new InputStreamReader(System.in)); â&#x20AC;˘

{ 9 Â&#x2013; Ă?Ă&#x201A; Ă&#x2019;' X <s ' \ ÂŚ{  9 Â&#x201C; ÂŚ  Â&#x20AC;  FileInputStream 9  tA Ăž Ă&#x203A; Âź\ ÂŚs  6 xĂ´   Ă&#x2021;  .

{ 9 \ Â e Â? Â&#x201D; HX  <s ' \ ÂŚ{  l 9 0 A K " fÂ? H

 { ` 9 ÂŚÂ&#x20AC;  $  \ # P Q  9,  6 xs   ¢ aÂŤ Ă&#x2018;á &Â&#x20AC; {  Â&#x2014; Â&#x152;  Ă´ Ă&#x2021;  . 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();

â&#x20AC;˘ BufferedReaderÂ? HÂż  Âşh >_ { 9 l B jÂ&#x2122; èĂ&#x2014; Âź readĂź < readLine` ÂŚ]  j/ NĂ´ B Ă&#x2021;  . readÂ? HĂŤ  H  ĂŠ Â&#x2013;0 Ă&#x; AÂ&#x2013; Ă?{ Â&#x201C; 9 ÂŚ, readLineÂ&#x201C; rĂ&#x2014; Ă&#x2030; ÂŚĂŠ  Â&#x2013;0 Ă&#x; AÂ&#x2013; Ă?{ 9 Â? H  . readÂ? H int\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Ă&#x2122; ÂźÂ&#x2013; Ă? charÂ&#x2013; Ă? { 9  ¨  Â&#x160;K 8  Ă´ Ă&#x2021;  . readLineÂ&#x201C; r{ Ă&#x2030; Â&#x201C; 9 r Ă&#x2030; ÂŚ`  Ă&#x2014; ÂŚĂŤ  H  \ Â&#x2013; P Ă?ĂŹ Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . char readChar; String readStr; ... char readChar = (char)bufReader.read(); ... String readStr = bufReader.readLine(); v t \  " f] j/ Ná B &Â? H9  tA Ăž Ă&#x203A; Âź â&#x20AC;˘ StringTokenizer ADT: java.util J 3


â&#x20AC;&#x201C; Ă&#x2019; t$ q

 Ă­ : StringTokenizer(String str) â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : ĂŤ Ă&#x152; H  \  str` P ÂŚÂ&#x17E;  Ă?H Z Â&#x2013; > Ă? Ă? tD Ăź hÂ&#x2013; Ă?ĂŽ r StringTokenizer\  ÂŚĂ&#x2019;  t$ q

Ă´ Ă­ Ă&#x2021;  . â&#x20AC;˘ l : Â&#x2018;& r Ă&#x153; h ÂźÂ&#x2013; Ă? 6 x   Â? HĂŹ  ro   Â? H/  NĂ&#x2018; B Â&#x2DC;ĂŤ Ăž H  , Ăą Â&#x153;ĂŤ Ă H  , D h  Â&#x201C; s  . â&#x20AC;&#x201C; int countTokens() Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Â&#x152; Ă&#x152; Â&#x2122; zÂ&#x201C; rĂ? Ă&#x2030; Â&#x17E;H _ > hĂ&#x192; Âş\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;˘  â&#x20AC;&#x201C; boolean hasMoreTokens() â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : ĂŤ Ă&#x152; H  \ \ P   f ĂŹ Â&#x201D; ro   t ¡ §Â&#x201C; Ăş rÂ&#x17E; Ă&#x2030; Ă?H s e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  true\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; String nextToken() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : ĂŤ Ă&#x152; H  \ ? P /\   f ĂŹ Â&#x201D; ro   t ¡ §Â&#x201C; Ăş rÂ&#x17E; Ă&#x2030; Ă?H s e # Â&#x201D; Q Ă´ Ă&#x2021;  . Ă&#x2013; ÂłÂ&#x201A; Ă?Z :  Ă&#x152; 6 §Ă? ÂŁ Â&#x17E;H ` ÂŚĂŤ  H  \ Â&#x2013; P Ă?ĂŹ Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;˘  â&#x20AC;˘ \ VĂź @: NoSuchElementException â&#x20AC;˘ String, BufferedReader, StringTokenizer 9 tA Ăž Ă&#x203A; Âź\ ÂŚs  6 x   # Â&#x152;% Â&#x2DC;Ă&#x203A; 7 Ÿà Ă&#x201D;

{ 9 ` ÂŚÂ&#x17E;  Ă? HZ  Â&#x2013; > Ă?ĂŹ ro   Â? H  ĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A; Lexical.java\ Ăž ΢  a$

Ă­  . s ĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A;Â&#x201C; Ăž r Ă&#x2030; 6 §þ ÂŁ °  s Ăş Ă&#x2DC; Τ  K 4  Ă´ Ă&#x2021;  . 1: Ă? ' P  :Â&#x17E; Ă?H  2: Âż Âş  P  :Â&#x17E; Ă? H  ... s ĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A;` Ăž ÂŚÂ  Â&#x2022;Â&#x201C; Â&#x152; r Ă&#x2030;  ĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A;Â&#x2122; Ăž èĂ&#x203A; Âź

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

6

In-Lab 2 o^ Â? Â&#x2030;Â? HĂ&#x201D;  ÂŚÂ  Ă&#x152;  o^ Â? Â&#x2030;s  . 7 ¤, Ă´ ÂŁ Ă&#x2021;  ĂŤ  H  \ Â&#x2013; P Ă?[ & O

á Ăą &Â&#x20AC; Ă&#x2022;  ÂŞĂŤ H  \ _ P ? /6 x   ÂŚ `  

½ â Ă&#x2030;Ă&#x192; + Âş\  O . â&#x20AC;˘ String Ă&#x152; â&#x20AC;˘ Ă&#x; ĂŤÂ&#x20AC; Â&#x2013; Â&#x2022;[ Â? & O

Â? Ăą aĂŤ ) H  \ _ P ? /6 x   ÂŚ ` Ă&#x2039; ¨ Ă&#x2039; ¨# Q  Â&#x20AC;  String 9  tA Ăž Ă&#x203A; Âź@ / Â&#x2019; \  StringBuffer 9 tA Ăž Ă&#x203A; Âź\ ÂŚ  6 x   Ă&#x2030;Ă&#x192; + ½ Âşe  Â&#x201D; . â&#x20AC;˘ StringBuffer ADT t$ q

 Ă­ : StringBuffer() â&#x20AC;&#x201C; Ă&#x2019; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : 6 Ă&#x152; x|   Ă&#x201C;s ž  16Â&#x201C;  StringBuffer Ă&#x152;  o^ Â? Â&#x2030;\ ÂŚĂ&#x2019;  t$ q

Ă´ Ă­ Ă&#x2021;  . 16> h_ Â&#x2014; ¸Â&#x17D; HĂŤ  H  \ ? P /\  0 Au Â? H nullÂ&#x2013;  Ă? Ă­l Â&#x153;  oÂ? a ) . â&#x20AC;&#x201C; Ă&#x2019; t$ q

 Ă­ : StringBuffer(int size) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : size>0 Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : 6 Ă&#x152; x|   Ă&#x201C;s ž  sizeÂ&#x201C;  StringBuffer Ă&#x152;  o^ Â? Â&#x2030;\ ÂŚĂ&#x2019;  t$ q

Ă´ Ă­ Ă&#x2021;  . Â&#x2014; ¸Â&#x17D; HĂŤ  H  \ ? P /\  0 Au Â? H nullÂ&#x2013;  Ă?Â&#x153; Ă­  l oÂ? a ) . â&#x20AC;&#x201C; Ă&#x2019; t$ q

 Ă­ : StringBuffer(String str) â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2026; Ă&#x152; Ă&#x2019;# QÂ&#x201D;  strÂ&#x2013;  Ă?G 0 > Â&#x201D;  StringBuffer Ă&#x152; o^ Â? Â&#x2030;\ ÂŚĂ&#x2019;  t$ q

Ă­ Â&#x201C; ÂŚ, Ă&#x2020; Ă&#x2019;Â&#x2013; Ă? 16> h_ ĂŤ H  \ ÂŚ$   Â&#x153;½ Š Ă&#x2030; + Âşe Ă&#x192; Â? Â&#x201D; HB  N /ç Â&#x2013;` Ă&#x; ÂŚS  Â&#x2030;Â&#x2DC; X Ă?Ă´ Ă&#x2021;  . 7 ¤, Ă&#x2019; ÂŁ t$ q

Â? Ă­ aĂ&#x152; ) o^ Â? Â&#x2030;_ 6 x|   Ă&#x201C;Â&#x201C; ž r str.length()+16s Ă&#x2030;  . â&#x20AC;&#x201C; StringBuffer append(String str) â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2019; Ă&#x152; Ă&#x2026;# QÂ&#x201D;  str\  Œ   ĂąĂ&#x2DC; ÂŚÂ?  a StringBuffer Ă&#x152; ) o^ Â? Â&#x2030;_ ? /6 x+   '\   ½  Ă&#x2039;Ă´ + Ă&#x2021;  . â&#x20AC;&#x201C; StringBuffer append(char c) Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2019; Ă&#x152; Ă&#x2026;# QÂ&#x201D; ĂŤ  H   c\ Œ   ĂąĂ&#x2DC; ÂŚÂ?  a StringBuffer Ă&#x152; ) o^ Â? Â&#x2030;_ ? /6 x+   '\  Ă&#x2020; Ă&#x2019;Ă´ Ă&#x2021;  . â&#x20AC;˘  â&#x20AC;&#x201C; int capacity() â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ăą Ă&#x152;  Ă&#x2DC; ÂŚÂ?  aĂ&#x152; ) o^ Â? Â&#x2030;_ 6 x|   Ă&#x201C;` ž ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; int length() â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ăą Ă&#x152;  Ă&#x2DC; ÂŚÂ?  aĂ&#x152; ) o^ Â? Â&#x2030;\  $  Â&#x153;á Š &# Qe Â? Â&#x201D; HĂŤ  H  \ _ P U ´s  \ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; char charAt(int n) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : nÂ&#x201C; Ă&#x152; r StringBuffer_ Ă&#x2030; Ă&#x; Âźl Â&#x2DC; Ă?  Â&#x2022; Â&#x152;   9, Â&#x20AC; Â&#x153;_ ÂŞ &

Ă&#x192; Ăą Âşs # Q Ă´ Ă&#x2021;  . â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ăą Ă&#x152;  Ă&#x2DC; ÂŚÂ?  aĂ&#x152; ) o^ Â? Â&#x2030;_  n P  :ĂŤ H  \ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; StringBuffer delete(int start, int end) 4


â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : 0 â&#x2030;¤start<length(), start<end Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z :   Ă&#x152; ĂąĂ&#x2DC; ÂŚÂ?  aĂ&#x152; ) o^ Â? Â&#x2030;_ ĂŤ H  \ \ P  " f startĂ&#x201A; Ă&#x2019;'  end t _ ĂŤ H  \ ÂŚ]  j Ă´ Ă&#x2021;  . end s Ă&#x160; ĂŞ_ ĂŤ H   tÂ&#x201C; Ăž [ r¢ Ă&#x2030; aA , ¤Ă&#x153; ĂĄ ÂźÂ&#x2013; Ă?s 1 xĂ´ l Ă&#x2021;  . end Ă&#x152; o^ Â? Â&#x2030;_ U ´s  Â&#x2DC; Ă? U ´Â&#x20AC;   startĂ&#x201A;  Ă&#x2019;' ĂŤ H  \ _ P = Q ĂĽ t _ ĂŤ H  \ ÂŚ]  j Ă´  Ă&#x2021;  . â&#x20AC;˘ \ VĂź @: StringIndexOutOfBoundsException â&#x20AC;&#x201C; StringBuffer insert(int index, String str) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : 0 â&#x2030;¤index<length() Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2026; Ă&#x152; Ă&#x2019;# Q Â&#x201D;  str` Œ   ĂąĂ&#x2DC; ÂŚÂ?  aĂ&#x152; ) o^ Â? Â&#x2030;_  index 0 Au \  œ Â&#x161;{ Ăş Ă´ 9 Ă&#x2021;  . " ÂśA ĂŠ 0 Au s Ă&#x160; ĂŞ\  e Â? Â&#x201D; HÂ&#x2014;  ¸Â&#x17D; HĂŤ  H   HĂş  Â? Â&#x161; Âś{ Â? 9 aĂŤ ) H  \ + P '\  0 Au  Â&#x2022; ¸2 ¤s Â&#x; 1 xÂ? l a ) . VĂź @: StringIndexOutOfBoundsException â&#x20AC;˘ \ â&#x20AC;&#x201C; void setCharAt(int index, char ch) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : 0 â&#x2030;¤index<length() Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ăą Ă&#x152;  Ă&#x2DC; ÂŚÂ?  aĂ&#x152; ) o^ Â? Â&#x2030;_  index 0 Au \  e Â? Â&#x201D; HĂŤ  H  \ ÂŚĂ&#x2026;  Ă&#x2019;# Q Â&#x201D; ĂŤ H   chÂ&#x2013; Ă? Ăľ H  . â&#x20AC;˘ \ VĂź @: StringIndexOutOfBoundsException â&#x20AC;&#x201C; String substring(int start) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : 0 â&#x2030;¤start<length() Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : start 0 Ă&#x152; Au Ă&#x201A; Ă&#x2019;' l Â&#x201D; rĂŤ > H  \ = P Q ĂĽ t Â&#x2013; Ă?½ ¨$

Â? Ă­ aD ) h String Ă&#x152; o^ Â? Â&#x2030;\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;˘ \ VĂź @: StringIndexOutOfBoundsException â&#x20AC;&#x201C; String substring(int start, int end) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : 0 â&#x2030;¤start, end<length(), start<end Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : start 0 Ă&#x152; Au Ă&#x201A; Ă&#x2019;'  end-1 t Â&#x2013; Ă?½ ¨$

Â? Ă­ aD ) h String Ă&#x152; o^ Â? Â&#x2030;\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;˘ \ VĂź @: StringIndexOutOfBoundsException â&#x20AC;˘ Hangman > e ĂĄ Â&#x201D; Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A;: s Ăž > e Â&#x201C; Â&#x201D; r( Ă&#x2030; Ă&#x2030; Â&#x17D; Ă&#x201C;'  Â&#x201A; Ă&#x2014;  Â&#x2DC;Ă´ Ăž Ă&#x2021;% 

ĂŤ ò HĂŠ  Â&#x2013;# Ă&#x; Q\ Œ¡  Â&#x2DC; Ăş ´ Â?Ă&#x2020; Ăş Ă&#x2019;Â? H>  e s Â&#x201D;  .  6 x   Â? HĂŠ  Â&#x2013;# Ă&#x; Q\ ÂŚ  ½ ¨$

Ă­ Â? HĂŤ  H  \ ÂŚ   m Ă&#x2020; Â&#x201D; Ă&#x2019;8 ¤ ÂŁ > á &9, Ă&#x2020; Ă&#x2019;8 ¤ô ÂŁ Ă&#x2021;ĂŤ  H   ĂŠ Â&#x2013;# Ă&#x; Q\  1 x p Â&#x153; Š Â&#x20AC; Ă&#x2022;  ÂŞĂŤ H   1 x p Â&#x153;Ă´ Š Ă&#x2021;Â&#x2014;  ¸Â&#x17D; H0  Au \ ÂŚÂ&#x2DC;  Ă? # Â&#x152;Ă&#x2026; Ă&#x2019;> Â? a ) . s ĂĄ Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A;Â&#x201C; Ăž r Hangman, HangmanProgram, wordDB [ Ă&#x2030; j> h_ 9 tA Ăž Ă&#x203A; ÂźÂ&#x2013; Ă?½ ¨$

Â? Ă­ a ) . Hangman 9 tA Ăž Ă&#x203A; ÂźÂ? HÂ&#x2030;  ÂłF & > e  Â&#x201D; Â&#x201D; Â? ' Â&#x; Â&#x2020; Ă&#x201C;` ½ ÂŚ StringBuffer Ă&#x152;  o^ Â? Â&#x2030;\ ÂŚ:  xK Â&#x; Ă&#x201E; Âťt  9,  6 x    Ă&#x2020; Ă&#x2019;8 ¤ô ÂŁ Ă&#x2021;ĂŤ  H  \     > e Â&#x201D; Â&#x201D; '  Â? Â&#x; Â&#x2020; Ă&#x201C;` ½ ÂŚĂ&#x152;  t q Â&#x2019; Ă´ Ă&#x2021;  . HangmanProgram 9 tA Ăž Ă&#x203A; ÂźÂ? H>  e ` Â&#x201D; ÂŚÂ&#x201D;  '  Â? Â&#x; l 0 AĂ´ Ă&#x2021;  Â&#x201C; ' ` Â&#x2026;s Ă&#x203A; Âź\ ÂŚ]  j/ NĂ´ B Ă&#x2021;  . wordDB 9 tA Ăž Ă&#x203A; ÂźÂ? H%  7 Â&#x2DC;Ă&#x203A; Ÿà Ă&#x201D;

{ 9 Â&#x2013; Ă?½ ¨$

Â? Ă­ aX ) <s ' Z Â&#x2026;s Ă&#x203A; Ÿ \" fe _ Â&#x201D; _ ĂŠ Â&#x2013;# Ă&#x; Q\ ÂŚÂ&#x201A;  Ă&#x2014;  Â&#x2DC; Ăž # Â&#x152;ĂŻ r  . Hangman 9 tA Ăž  Ă&#x203A; Âź_  6 §B ÂŁ jÂ&#x2122; èĂ&#x2014; Âź\ ΢  a$

Ă­ Â&#x201C; ÂŚ, â&#x20AC;&#x201C; public boolean guessALetter(char guessChar) â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2026; Ă&#x152; Ă&#x2019;# Q Â&#x201D;  guessChar ĂŠ Â&#x2013;# Ă&#x; Q\  1 x p Â&#x153; Š Â? Ht    Â&#x17D;  # Â&#x152;1 x p Â&#x153; Š Â? H0  Au   > e  Â&#x201D; Â&#x201D; Â? ' Â&#x; Â&#x2020; Ă&#x201C;` ½ ÂŚ  tÂ&#x2019; q Ă&#x152; Ă´  Ă&#x2021;  . ¸ ¢ô Ă&#x2021;p  x 1 Â&#x153; Š Â&#x20AC;  true\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚ, 1 x p Â&#x153; Š t ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . HangmanProgram 9 tA Ăž Ă&#x203A; Âź_  main Â&#x2020; Ă&#x160;Ă&#x192; < Âş\ ΢  a$

Ă­ r Â&#x161; ¸.  6 x   Â? HĂž  j@ /# Â&#x152;$  à   t ¸ Â&#x2DC;3 Ăş wÂ? l aĂ&#x2020; ) Ă&#x2019;8 ¤` ÂŁ Œ½  Ă&#x2030;Ă&#x192; + Âş e  Â&#x201D; . $

/ Ă­ NĂ´ B Ă&#x2021; 

Ă&#x201E; â Âş\  Â? HY 

 > _  Ă&#x2020; Ă&#x2019;8 ¤Í ÂŁ Â&#x2013;\ Ă&#x;  $

/ Ă­ N B % Â? i Ht   Ă&#x2DC;§ ÂŚ Ă´ 4 Ă&#x2021;  .  6 x   Â&#x2013; Ă?Ă&#x201A; Ă&#x2019;' ĂŤ H  \ ÂŚ{  § 9 ~ 4 Ă&#x17D;` Ă&#x192; ÂŚM  :   Hangman_  guessALetter\ ÂŚs  6 x   # Â&#x152;> e Â&#x201D; Â&#x201D; '  Â? Â&#x; Â&#x2020; Ă&#x201C;` ½ ÂŚĂ&#x152;  t q Â&#x2019;  Â&#x201C; ÂŚ, Ă&#x2022; ÂŞ Ăľ  \ ÂŚÂ&#x2DC;  Ă?# Â&#x152;ĂŻ r  . ĂŤ H  _ { § 9 Ăľ 4  B jr t _ Ă&#x2DC; Τ  Â&#x201C; 4 r JOptionPane_ Ă&#x2030;  showInputDialogĂź < showOutputDialog` ÂŚs  6 xĂ´   Ă&#x2021;  .

7

Post-Lab â&#x20AC;˘  ĂŤ H \ ` P ÂŚ%  Â&#x192;o ½ Ă&#x2030;M + : String 9 tA Ăž Ă&#x203A; Ÿ¢ ¸Â? H StringBuffer 9  tA Ăž Ă&#x203A; Âź\ ÂŚ  6 x½   Ă&#x2030;Ă&#x192; + Âşe  Â&#x201D; . Âż Âş9 tA Ăž Ă&#x203A; Âź\ ÂŚ  6 x½   Ă&#x2030; + M : s & ` h ÂŚ  6 §Â? ÂŁ ĂŻĂ&#x2014; Âź\ ÂŚ  s6 x   # Â&#x152;q Â&#x201C; §[ " O

ĂŽ r Â&#x161; ¸. 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


â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z :  Ă&#x152; &" f Â&#x2030; ÂłF &  o v Â? HĂ˝  aÂł Ă°\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; void clear() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : \ Ă&#x152; 6 O § ÂŁ â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : o Ă&#x152; Ă&#x203A; Ÿà Ă&#x201D;\  e Â? Â&#x201D; HÂ&#x2014;  ¸Â&#x17D; HĂ˝  aÂł Ă°\ ÂŚ]  j Ă´ Ă&#x2021;  . o Ă&#x203A; Ÿà Ă&#x201D;_ Ă&#x; Âźl &

Â&#x2DC; Ăą Ă?Â? H 0s  á &# Q  9, & " fÂ? H  -1Â&#x2013; Ă?[ & O

K Ăą  Ă´ Ă&#x2021;  . â&#x20AC;&#x201C; boolean isEmpty() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : \ Ă&#x152; 6 O § ÂŁ Ă&#x2013; ÂłÂ&#x201A; Ă?Z :  Ă&#x152; oĂ&#x203A; Ÿà Ă&#x201D; q # Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  true\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚĂ&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;˘  â&#x20AC;&#x201C; boolean isFull() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : \ Ă&#x152; 6 O § ÂŁ â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z :  Ă&#x152; oĂ&#x203A; Ÿà Ă&#x201D; T ` q e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  true\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚĂ&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . Â&#x2030; ÂłF & o Ă&#x203A; Ÿà Ă&#x201D;_  Âźl Ă&#x; Ăź <o Ă&#x203A; Ÿà Ă&#x201D;\ Œ½  ¨Â&#x2030; ³ô & Ă&#x2021;C  \ _ P 6 x|   Ă&#x201C;` ž ÂŚq  Â&#x201C; § # Â&#x152;o Ă&#x203A; Ÿà Ă&#x201D; T ` q e Â? Â&#x201D; Ht    Â&#x17D; Ă´ Ă&#x2021;  . â&#x20AC;&#x201C; boolean gotoBeginning() b Â&#x201A; 9 Ă?Z : \ Ă&#x152; 6 O § ÂŁ â&#x20AC;˘  â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : o Ă&#x152; Ă&#x203A; Ÿà Ă&#x201D; q # Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚ, Ă&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC; &  " f\ ÂŚo  Ă&#x203A; Ÿà Ă&#x201D;_ % Â&#x192;6 §Ă&#x153; ÂŁ ÂźÂ&#x2013; Ă?s 1 x l Â&#x201C; ÂŚ true\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; boolean gotoEnd() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : \ Ă&#x152; 6 O § ÂŁ â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : o Ă&#x152; Ă&#x203A; Ÿà Ă&#x201D; q # Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚ, Ă&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC; &  " f\ ÂŚo  Ă&#x203A; Ÿà Ă&#x201D;_ = QĂ&#x153; ĂĽ ÂźÂ&#x2013; Ă?s 1 x l  ÂŚ true\ Â&#x201C; ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; boolean gotoNext() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : \ Ă&#x152; 6 O § ÂŁ â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : & Ă&#x152; " f o Ă&#x203A; Ÿà Ă&#x201D;_ = Q\ ĂĽ  e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚ, Ă&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC; &  " f\ ÂŚĂ&#x2022;  ÂŞ 6 §ý ÂŁ aÂł Ă°\ ÂŚ  o v Â&#x2022; ¸2 ¤ Â&#x; s1 x l Â&#x201C; ÂŚ true\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; boolean gotoPrior() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : \ Ă&#x152; 6 O § ÂŁ Ă&#x2013; ÂłÂ&#x201A; Ă?Z : & Ă&#x152; " f o Ă&#x203A; Ÿà Ă&#x201D;_ % Â&#x192;6 §\ ÂŁ  e  Â&#x201D;  o Âź Ă&#x203A;Ă  Ă&#x201D; ^ Â&#x2030; q # Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚ, Ă&#x2022; ÂŞX t O  â&#x20AC;˘  §Ă&#x153; Ăş ¡ ÂźÂ&#x20AC; &  " f\ ÂŚ  Â&#x2013; Ă?Â&#x201E; Ă˝  aÂł Ă°\ ÂŚ o  v Â&#x2022; ¸2 ¤s Â&#x; 1 x l Â&#x201C; ÂŚ true\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; void showStructure() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : \ Ă&#x152; 6 O § ÂŁ â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : o Ă&#x152; Ă&#x203A; Ÿà Ă&#x201D;\  e Â? Â&#x201D; HÂ&#x2014;  ¸Â&#x17D; HĂ˝  aÂł Ă°\ ÂŚĂ&#x2DC;  Τ  Ă´ 4 Ă&#x2021;  . ĂŤ Â&#x2013;Â&#x20AC; Ă&#x; Â&#x2022;o Â? Ă&#x203A; Ÿà Ă&#x201D; q # Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  â&#x20AC;&#x153;List is empty.â&#x20AC;?\  ÂŚĂ&#x2DC;  ÂŚ  Ă´ 4 § Ă&#x2021;  .  sB jÂ&#x2122; èĂ&#x2014; ÂźÂ? Hn  ! Q^

` ç ÂŚ3  q& l Ă&#x153; h ÂźÂ&#x2013; Ă?ĂŤ Â&#x2013; Ă&#x; 6 xÂ?   a ) .

4

PreLab â&#x20AC;˘  6 § ÂŁ ÂŚ `s 6 x   Â&#x152; # 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 â&#x20AC;˘ ½ ¨Â&#x2030; Âłr & Ă&#x201E; Âť_  Â&#x2020; Ă&#x201C; ½ â&#x20AC;&#x201C;  Â&#x201E; Â&#x203A;  ¸| \  0 AC á &Â&#x20AC; &  X h  ]Ă´ Ă&#x2021;Â&#x161;  ¸Ă&#x20AC; Ă&#x201C;B jr t \ ÂŚÂ&#x2013;  H_ B t\ "  Ă&#x2DC; Τ  Ă´ 4 Ă&#x2021;  . â&#x20AC;&#x201C; cursorÂ? H â&#x2C6;&#x2019;1Â&#x2013;  Ă?Â&#x153; Ă­l  o Ă&#x2021; Ă´ . â&#x20AC;˘ ¢$ a

` Ă­ ÂŚ  Â&#x20AC;  ConstructPointList 9  tA Ăž Ă&#x203A; Âź\ ÂŚs  6 x   # Â&#x152; PointList\ Œ½  ¨ ¤K ÂĄ Â&#x2018; r : . s 9 tA Ăž Ă&#x203A; ÂźÂ? Hy  Â&#x153;_ Š < Ă&#x152; ` Â&#x2026;s t \  " f ĂŽ r~  Ă&#x17D;` Ă&#x192; ÂŚÂş  Ă&#x192;e  Â&#x201D; . â&#x20AC;˘ TestPointList 9 tA Ăž Ă&#x203A; Âź\ ÂŚs  6 x   # Â&#x152; PointList\ ÂŚ]  j@ /Â&#x2013; Ă?½ ¨Â&#x2030; Âł & % Â? i Ht   6 § ÂŁ ÂŚ `  Â&#x17D;  # Â&#x152;S Â&#x2030;Â&#x201C; X Ă´  Ă&#x2021;  . s  9 tA Ăž Ă&#x203A; ÂźÂ&#x2022; ¸y Â&#x153;_ Š < Ă&#x152;` Â&#x2026;s t  \" f ĂŽ r~  Ă&#x17D;` Ă&#x192; ÂŚĂ&#x192;  Âşe  Â&#x201D; . â&#x20AC;&#x201C; Ăž j@ /Ă&#x; Âźl  t > 5 qĂ˝ Ă&#x2026; aÂł Ă°\ ÂŚĂ&#x2020;  Ă&#x2019;K Â&#x2018; r : . â&#x20AC;&#x201C; isFull B jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚS  Â&#x2030;Â&#x201C; X Ă´  Ă&#x2021;  . â&#x20AC;&#x201C; gotoBeginning B jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚS  Â&#x2030;Â&#x201C; X Ă´  Ă&#x2021;  . â&#x20AC;&#x201C; gotoNext B jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚ  s6 x   # Â&#x152;o Ă&#x203A; Ÿà Ă&#x201D;_ = Q ĂĽ t s l x 1Ă´ Ă&#x2021;  . s 1 x l Â&#x20AC; "  fÂ&#x2030; ÂłF & & " f_ ° â&#x20AC;Ť`×&#x203A;â&#x20AC;Ź Ăş ÂŚĂ&#x2DC;  Τ  Ă´ 4 Ă&#x2021;  . â&#x20AC;&#x201C; gotoPrior B jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚs  6 x   # Â&#x152;o Ă&#x203A; Ÿà Ă&#x201D;_ % Â&#x192;6 §Ă&#x153; ÂŁ ÂźÂ&#x2013; Ă?s 1 xĂ´ l Ă&#x2021;  . â&#x20AC;&#x201C; T `Ă° q Ă?o ø Ă&#x203A; Ÿà Ă&#x201D;\ ÂŚ clearĂ´  Ă&#x2021;  . â&#x20AC;&#x201C; isEmpty B jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚS  Â&#x2030; X Â&#x201C; Ă´ Ă&#x2021;  . â&#x20AC;&#x201C; Ă˝ aÂł Ă°\ ÂŚY 

> > h r Ă&#x2020; Ă&#x2019;K Â&#x2018; r : .

5

In-Lab â&#x20AC;˘ p ¢ a$

Â? Ă­ a DrawCurv 9 ) tA Ăž Ă&#x203A; Âź\ ÂŚy  Â&#x153;_ Š < Ă&#x152;` Â&#x2026;s t \  " f ĂŽ r~  Ă&#x17D; Ă&#x192; { 9 § ~ 4 Ă&#x17D;Â&#x201C; Ă&#x192; r& Ă&#x2030; [ h t` Ăž ÂŚ  Y VÂ&#x2013; Ă?s # QĂ&#x2026; Ă&#x2019;Â? HÂ&#x201A;  `  ÂŚĂ&#x2022;  ÂŞo  Â&#x2022; ¸2 ¤ DrawCurv 9 Â&#x; tA Ăž Ă&#x203A; Âź_  paint B jÂ&#x2122; èĂ&#x2014; Âź\ ΢  a$

Ă­ # Â&#x152; . â&#x20AC;&#x201C; Graphics2D 9 tA Ăž Ă&#x203A; Âź_  drawLine B jÂ&#x2122; èĂ&#x2014; ÂźÂ? HĂ´  Ă&#x2021;&  \ h   Â? r& Ă&#x2030;  h t _ Â&#x201A; `  ÂŚĂ&#x2022;  ÂŞ 9ĂŻ r  . \ V) g.drawLine(10, 10, 30, 20); (10, 10)\  " f (30, 20) t _ Â&#x201A; `  ÂŚĂ&#x2022;  ÂŞ 9ĂŻ r  . Â&#x2DC; Âś ĂťÂ&#x2022; ¸Ă&#x201E; º \" fĂ˝ aÂł Ă°Â? H¢  aA , ¤ ĂĄ Â&#x153;ĂŠ Š Â&#x2013;s Ă&#x;  (0,0)s  . Ă&#x2022; ÂŞa >1Â&#x201A; Ă&#x2039; Ă?Â&#x203A; Ă&#x192; ¸. 3


(0, 0)

(10, 0)

(20, 0)

(30, 0)

(10, 10)

(0, 10)

(0, 20)

(30, 20)

(0, 30)

<Ă&#x2022; ÂŞa > 1> Â&#x2DC; Ă&#x2039; ÂśÂ&#x2022; Ăť ¸Ă&#x201E; ºý aÂł Ă°

6

Post-Lab â&#x20AC;˘  6 §Â&#x192; ÂŁ Ă­  Â&#x2013;` Ă&#x; ÂŚ PointList\   Ă&#x2020; Ă&#x2019;Ă´ Ă&#x2021;  . â&#x20AC;&#x201C; void insertBeginning(Point newPoint) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : isFull()==false, newPoint!=null Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : D Ă&#x152; hĂ˝ aÂł Ă°\ ÂŚo  Ă&#x203A; Ÿà Ă&#x201D;_  p% Âą Â&#x192;6 §\ ÂŁ  Ă&#x2020; Ă&#x2019;Ă´ Ă&#x2021;  . & " fÂ? HĂ&#x2020;  Ă&#x2019;Ă´ Ă&#x2021;D  hĂ˝ aÂł Ă°\ ÂŚ o  v Â&#x2022; ¸2 ¤ Â&#x;  

Ă´ â Ă&#x2021;  .  â&#x20AC;&#x201C; void delete(Point aPoint) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : isEmpty()==false, aPoint!=null Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z :  Ă&#x152; Â&#x2022;] Â&#x152; j½ Ă&#x2030;Ă˝ + aÂł Ă° o Ă&#x203A; Ÿà Ă&#x201D;\  Â&#x201D; rF >  Â&#x20AC; Ă&#x2022;  ÂŞĂ˝ aÂł Ă°\ ÂŚ  Â&#x2022;] Â&#x152; jĂ´ Ă&#x2021;  . s M :s Ă˝ aÂł Ă°+ '\  e Â? Â&#x201D; HĂ˝  aÂł Ă°[ t Ăž r Ă&#x2030; Â&#x201C;  m ¢ Â&#x201D; aA , ¤Ă&#x153; ĂĄ ÂźÂ&#x2013; Ă?s 1 xK l   9, & " fÂ? H  Â&#x2022;] Â&#x152; jĂ´ Ă&#x2021;Ă˝  aÂł Ă° 6 §\ ÂŁ  0 Au  Â&#x2022; ¸2 ¤ô Â&#x; Ă&#x2021;  . ĂŤ Â&#x2013;Â&#x20AC; Ă&#x; Â&#x2022; Â? p Âą t } Â&#x2022; Â&#x152; aÂł Ă˝ Ă°\ ÂŚ  Â&#x2022;] Â&#x152; j % Ă&#x153; i ÂźÂ&#x20AC; &  " fÂ? H'  Ă˝ Ă? aÂł Ă°\ ÂŚ o  &   9,  Â&#x2022;] Â&#x152; jM :ĂŤ H\    Â&#x2018; o Ă&#x203A; Ÿà Ă&#x201D; á &Â&#x20AC; &  " fÂ? H -1  â&#x20AC;Ť×&#x203A;â&#x20AC;ŹĂ&#x153; Ăş ° ÂźÂ&#x2013; Ă?[ & O

K Ăą  Ă´ Ă&#x2021;  . s Â&#x192; Ă­  Â&#x2013;Â&#x201C; Ă&#x; rÂ&#x192; Ă&#x2030; ]  j  Â&#x153;q Š ´ òĂ&#x2013; ÂŚ&   h Â&#x201C; ?

4


c °2005, sangjin@kut.ac.kr

Â&#x201E;  Ă&#x201E;Â&#x2122; Â&#x2013;Â&#x2030; ÂŹĂ&#x2039; ĂŹĂ?  ĂŚÂ&#x203A; P  ò Laboratory 4. List ADT

1

Â? Ă&#x2014;X Ă&#x2019; Ă&#x201E; ĂŹ â&#x20AC;˘  z ´_ v 3\ Ăž  " fÂ? HĂ˝  aÂł Ă°&

Â&#x2DC; Ăą Ă?ĂŤ Â&#x2013;$ Ă&#x;  Â&#x153;½ Š Ă&#x2030;Ă&#x192; + Âşe Â? Â&#x201D; H PointList\  ÂŚ9  tA Ăž Ă&#x203A; Âź\ Œ½  ¨Â&#x2030; Âł & %  i . s z ´_  v\ Ăž  " fÂ? H  Â&#x20AC; Â&#x153;Ă´ ÂŞ Ă&#x2021;& 

Ăą Â&#x2DC; Ă?\ ÂŚ$   Â&#x153;½ Š Ă&#x2030;Ă&#x192; + Âşe Â? Â&#x201D; H#  6 3 xo   Ă&#x203A; Ÿà Ă&#x201D; ADT\ Œ½  ¨Â&#x2030; ÂłK & Â&#x2018; r : . â&#x20AC;&#x201C; s z ´_  v\ Ăž  " f½ ¨Â&#x2030; Âł & Â&#x201C; ÂŚ  Â? H#  6 3 xo   Ă&#x203A; Ÿà Ă&#x201D; ADTÂ? H´  _ z v 3\ Ăž  " f½ ¨Â&#x2030; ³ô & Ă&#x2021; PointListĂź  < Ă° Ă?t ø Â&#x2013; Ă?C \  P ÂŚs  ` 6   x # Â&#x152;o Ă&#x203A; Ÿà Ă&#x201D;\ Œ½  ¨Â&#x2030; ³ô & Ă&#x2021;  . â&#x20AC;&#x201C; PointListÂ? Ho  Ă&#x203A; Ÿà Ă&#x201D;Â&#x203A; ¸ Â&#x2022;Ăľ Â&#x152; Â&#x203A; aÂş '   # Â&#x152; append B jÂ&#x2122; èĂ&#x2014; ŸÍ Â&#x2013;] Ă&#x; j/ N B % t i ĂŤ Â&#x2013;s Ă&#x; z  ´_ v\ Ăž  " fÂ? HÂ&#x2DC;  Ă?: x Â&#x; ÂŤ Ă&#x2018;½ ¨ Â&#x203A; ¸\  " f] j/ N B Â? HÂś  Â&#x161;{ Ăş 9 ,  Â&#x2022;] Â&#x152; j, Â&#x201C; §^ Â&#x2030;,  Ă&#x2019; Â&#x17D; oÂ&#x192; Â? Ă­  Â&#x2013;1 Ă&#x; x` p Œ½  ¨Â&#x2030; ÂłK & Â&#x2018; r : . â&#x20AC;˘  Â&#x201C; ' ` Â&#x2026;s Ă&#x203A; Âź\ ÂŚÂ  ¸6 Ă&#x2013; xK   Â&#x2018; r : .

2

4 ~ Âż â&#x20AC;˘ o Ă&#x203A; Ÿà Ă&#x201D;Â? H°   Â&#x201C; Ăş r Ă&#x2030; { _ 9 â&#x20AC;Ť×&#x203A;â&#x20AC;Ź šÂ&#x2122; è[ t` Ăž ÂŚ"  fÂ&#x2013; Ă?Â&#x201A; +  AÂ&#x203A; Ăž a> ' \ ÂŚ t  Â&#x2022; ¸Â&#x; ¤ 2Ă&#x201E; Âťt  Â? H  ÂŤ Ă&#x2018;½ ¨Â&#x203A; ¸s  . â&#x20AC;˘  z ´_ v 3\ Ăž  " f% Â&#x192;! # 3 QÂ&#x2039; : " ¤& ÂŁ

 Ăą { _ 9 â&#x20AC;Ť×&#x203A;â&#x20AC;Ź šÂ&#x2122; è[ t` Ăž ÂŚ$   Â&#x153; Š Â? Ho  Âź Ă&#x203A;Ă  Ă&#x201D;\ ÂŚy  Â&#x2022;y Â&#x152; Â&#x2022;ĂŤ Â&#x152; Â&#x2013;[ Ă&#x; t# Ăž Q 6 x½   Ă&#x2030;Ă&#x192; + Âşe t Â&#x201D; ĂŤ Â&#x2013;s Ă&#x;  Â&#x201C; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź r Ă&#x2030;    v  \ .   \  " fÂ? HÂ&#x2014;  ¸Â&#x17D; HĂž  t 9A Ă&#x203A; Âź_ Â&#x203A; ¸ Â&#x153;s Š á &Â? H Object 9  tA Ăž Ă&#x203A; Âź\ ÂŚs  6 x   # Â&#x152;# 6 3 xo   Ă&#x203A; Ÿà Ă&#x201D;\ ÂŚĂŤ  Â&#x2013;[ Ă&#x; tĂ&#x192; Ăž Âşe  Â&#x201D; . t ĂŤ Â&#x2013; Object 9 Ă&#x; tA Ăž Ă&#x203A; Âź\ ÂŚs  6 x   Â&#x20AC; Âś  " ĂŠr  { 9 Â&#x201C; rs Ă&#x2030; ½ ¨Â&#x203A; ¸\  $  Â&#x153;½ Š Ă&#x2030;Ă&#x192; + Âş\ Â? O HĂŤ  H]  j& s h e  Â&#x201D; . â&#x20AC;˘ â&#x20AC;˘   \  " f intĂź <°  Â&#x201C; Ăş rÂś Ă&#x2030; " ĂŠ  { 9 Â&#x201C; rÂ&#x201A; Ă&#x2030; Ă?Â&#x203A; Ă&#x192; ¸ { 9 s  m Ă&#x2122; ÂźÂ&#x2013; Ă? Object C \ \ P  f ] Â&#x201D; @ X /{ 9 ½ Ă&#x2030;Ă&#x192; + Âş\  O . @ / Â&#x2019; s ĂŤ H]  j\ ÂŚ  K  ½  Ă&#x2030;Ă&#x192; + Âşe Â&#x2022; Â&#x201D; ¸2 ¤ Â&#x;  Â? Hr  Ă&#x203A; Âź% 7 Â&#x203A; s Ă&#x161; Ă&#x201D; Qo : xK Â&#x; Â&#x2014; ¸Â&#x17D; HĂŠ  "r Âś  { \ 9  @ /Ă´ Ă&#x2021; wrapper 9  tA Ăž Ă&#x203A; Âź\ ÂŚ]  j/ N B Â&#x201C; ÂŚe  Â&#x201D; . Wrapper Class Boolean Byte Character Double Float Integer Long Short

Ă&#x2019;$ t q

 Ă­ : " Âś ĂŠ  {  â&#x2020;&#x2019; 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Â&#x2122; j èĂ&#x2014; Âź: Wrapper â&#x2020;&#x2019; Âś " ĂŠ  { 9  boolean booleanValue() byte byteValue() char charValue() double double doubleValue() float floatValue() int intValue() long longValue() short shortValue()

\ V) &

Ă&#x192; Ăą Âş\ ÂŚ wrapper Ă&#x152;  o^ Â? Â&#x2030;Â&#x2013; Ă? Ă&#x2039; ¨Â&#x201C; ÂŚ r  wrapper Ă&#x152; o^ Â? Â&#x2030;\ ÂŚ& 

Ă&#x192; Ăą ÂşÂ&#x2013; Ă? Ă&#x2039; ¨Â? H~  Ă&#x201C;Z ½  O int i = 77; int j; Integer a = new Integer(i); j = a.intValue();

3

List ADT ¨$

â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Ă­ šÂ&#x2122; è: Object { _ 9 Ă&#x152; o^ Â? Â&#x2030;[ t` Ăž ÂŚ$   Â&#x153;½ Š Ă&#x2030;Ă&#x192; + Âşe Â? Â&#x201D; Ho  Ă&#x203A; ÂźĂ&#x201D; Ă , o Ă&#x203A; Ÿà Ă&#x201D;\  Â&#x2030; ÂłF & $  Â&#x153;á Š &# Qe Â? Â&#x201D; Hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; è_ > hĂ&#x192; Âş, o Ă&#x203A; Âź â&#x20AC;˘ ½ Ă  Ă&#x201D;\ ÂŚ]  H X  ½ Ă&#x2030;M + : 6 x   Â? H  &" f â&#x20AC;˘ ½ ¨Â&#x203A; ¸: Â&#x201A; +  AĂ­ Ăž H"  f\ ÂŚ t  9, Â&#x152; Â&#x2022; yâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź šÂ&#x2122; è_ Ă­ H"  fÂ? HÂś  Â&#x161;{ Ăş Â? 9 ar ) ç Â&#x2013;Ăľ Ă&#x; 0 Au \  _ K  & 

Â? Ăą a ) . y Â&#x2022;â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Â&#x152; šÂ&#x2122; è_ ] H X  Â&#x201C; r& Ă&#x2030; " f ÂŚs  \ 6 xĂ´   Ă&#x2021;  . & " Ă?  M h⠍ç Ă&#x192; j # aĂ&#x2018; Ă? Ă? Âż M Ă&#x2039; R Ă Â&#x; ¡V   g C Â&#x201D; §Ă? / M Ă&#x2014;( Â&#x2018; Ă&#x2014; Â&#x2018;  Â&#x2DC; +Âł Ă&#x20AC;Â&#x161; ÂżÂ&#x; ¡ h  Ă­ >  . 1


â&#x20AC;&#x201C; C \ ` P ÂŚs  6 x   # Â&#x152;½ ¨Â&#x2030; Âł & Ă&#x2122; ÂźÂ&#x2013; Ă?â&#x20AC;Ť×&#x203A;â&#x20AC;Ź šÂ&#x2122; è_ > hĂ&#x192; ÂşÂ? H 0Ă&#x153;  ÂźÂ&#x2013; Ă?Â&#x153; Ă­l  oK   9, & " fÂ? H -1Â&#x2013;  Ă?Â&#x153; Ă­l  o Ă&#x2021; Ă´ . â&#x20AC;˘ Â&#x192; Ă­  Â&#x2013; Ă&#x; â&#x20AC;&#x201C; l Â&#x2018; rĂ&#x2019; : t$ q

 Ă­ : List() â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : 6 Ă&#x152; x|   Ă&#x201C;s ž  DEF_LIST_CAPACITYÂ&#x201C; Â&#x2018;  o  Ă&#x203A; Ÿà Ă&#x201D;\ ÂŚĂ&#x2019;  t$ q

Ă´ Ă­ Ă&#x2021;  . o Ă&#x203A; Ÿà Ă&#x201D;_ Ă&#x2019; t$ q

Â? Ă­ H setup() B  j èĂ&#x2014; Â&#x2122; Âź\ ÂŚs  6 xĂ´   Ă&#x2021;  . â&#x20AC;&#x201C; Ă&#x2019; t$ q

 Ă­ : List(int capacity) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : capacity>0 Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : capacity>0s Ă&#x152; Â&#x20AC; 6  x|   Ă&#x201C;s ž  capacityÂ&#x201C;   Â&#x2018; o Ă&#x203A; Ÿà Ă&#x201D;\ ÂŚĂ&#x2019;  t$ q

Ă­ Â&#x201C; ÂŚ, Ă&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC; 6  x|   Ă&#x201C;s ž  DEF_LIST_CAPACITYÂ&#x201C;   Â&#x2018; o Ă&#x203A; Ÿà Ă&#x201D;\ ÂŚĂ&#x2019;  t$ q

Ă´ Ă­ Ă&#x2021;  . o Ă&#x203A; Ÿà Ă&#x201D;_ Ă&#x2019; t$ q

Â? Ă­ H setup() B  jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚs  6 xĂ´   Ă&#x2021;  . â&#x20AC;&#x201C; Ă&#x2019; t$ q

 Ă­ Â&#x2022; ¸š §s ÂĄ : void setup(int capacity) â&#x20AC;˘  sB jÂ&#x2122; èĂ&#x2014; ÂźÂ? HĂ&#x2019;  t$ q

 Ă­ ĂŤ Â&#x2013; Ă&#x; 6 x   Ă&#x2122; ÂźÂ&#x2013; Ă? private B jÂ&#x2122; èĂ&#x2014; ÂźÂ&#x2013; Ă?ĂŤ Â&#x2013;Â&#x17D; Ă&#x; H  . â&#x20AC;˘  9 bÂ&#x201A; Ă?Z : capacity>0, Ă&#x152; Ă&#x2013; ÂłĂ? Â&#x201A;Z :   Ă&#x152; x 6| Ă&#x201C;s ž  capacityÂ&#x201C;   Â&#x2018; o Ă&#x203A; Ÿà Ă&#x201D;\ ÂŚĂ&#x2019;  t$ q

Ă´ Ă­ Ă&#x2021;  . â&#x20AC;˘  â&#x20AC;&#x201C; void insert(Object newElement) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : newElement!=null, isFull()==false Ă&#x152; Ă&#x2013; ÂłÂ&#x201A; Ă?Z : & Ă&#x152; " f o v Â&#x201C; ÂŚe Â? Â&#x201D; Hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; è 6 §\ ÂŁ  Ă&#x2026; Ă&#x2019;# QÂ&#x201D; D  hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź šÂ&#x2122; è\ ÂŚÂś  Â&#x161;{ Ăş 9 Ă´ Ă&#x2021;  . & " fÂ? HÂś  Â&#x161;{ Ăş 9 Â? aâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź ) šÂ&#x2122; è\ ÂŚ  â&#x20AC;˘  o v Â&#x2022; ¸2 ¤s Â&#x; 1 xĂ´ l Ă&#x2021;  . & " f o Ă&#x203A; Ÿà Ă&#x201D;Ă&#x2014; Ìç  Â&#x2013;\ Ă&#x;  e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC; &  " f0 Au s Ă&#x160; ĂŞ\  e Â? Â&#x201D; Hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; èÂ? H  Y VÂ&#x2013; Ă?   ¸ Â&#x201D; m Â&#x161;Â? rA Ă&#x2030; ¤Ă&#x153; ĂĄ ÂźÂ&#x2013; Ă?s 1 x l Â&#x201C; ÂŚD hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź šÂ&#x2122; è\ ÂŚÂś  Â&#x161;{ Ăş Ă´ 9 Ă&#x2021;  . â&#x20AC;&#x201C; void remove() b Â&#x201A; 9 Ă?Z : isEmpty()==false Ă&#x152; â&#x20AC;˘  â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : & Ă&#x152; " f o v Â&#x201C; ÂŚe Â? Â&#x201D; Hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; è\ ÂŚ]  j Ă´ Ă&#x2021;  . & " f o Ă&#x203A; Ÿà Ă&#x201D;Ă&#x2014; Ìç  Â&#x2013;\ Ă&#x;  e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC; &  " f0 Au s Ă&#x160; ĂŞ  e \ Â? Â&#x201D; Hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; èÂ? H  Y VÂ&#x2013; Ă?  m ¢ Â&#x201D; aA , ¤Ă&#x153; ĂĄ ÂźÂ&#x2013; Ă?s 1 xĂ´ l Ă&#x2021;  . & " f = Q\ ĂĽ  e Â? Â&#x201D; H 

Ă&#x201E; â Âş\  Â? H&  " f\ ÂŚ%  Â&#x192;6 §Ă&#x153; ÂŁ ÂźÂ&#x2013; Ă? 1 s x l Â&#x201C; ÂŚ, Ă&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC; &  " fÂ? H  Â&#x2022;] Â&#x152; jĂ´ Ă&#x2021;â&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; è_  6 §â&#x20AC;Ť×&#x203A;â&#x20AC;Ź ÂŁ šÂ&#x2122; è\ ÂŚ o  v Â&#x2022; ¸2 ¤s Â&#x; 1 xĂ´ l Ă&#x2021;  . Â&#x2030; ÂłF & â&#x20AC;Ť×&#x203A;â&#x20AC;Ź šÂ&#x2122; è  Âľ Ă&#x161;\ 1  \ Â? O H 

Ă&#x201E; â Âş\   Â&#x2022;] Â&#x152; j s Ă&#x20AC; Ă&#x2019;# Qt Â&#x20AC; &  " f_ ° â&#x20AC;ŤÂ&#x201C;×&#x203A;â&#x20AC;Ź Ăş r â&#x2C6;&#x2019;1s Ă&#x2030; á &# Q Ă´ Ă&#x2021;  . â&#x20AC;&#x201C; void replace(Object newElement) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : newElement!=null, isEmpty()==false Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z :  Ă&#x152; &" f o v Â&#x201C; ÂŚe Â? Â&#x201D; Hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; è\ ÂŚD  hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź šÂ&#x2122; èÂ&#x2013; Ă? Ăľ H  . & " f_ 0 Au Â? H    t ¡ §Â? Ăş H  . â&#x20AC;&#x201C; Object getCursor() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : isEmpty()==false Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : o Ă&#x152; Ă&#x203A; Ÿà Ă&#x201D; q # Qe Â? Â&#x201D; H 

Ă&#x201E; â Âş\  Â? H null`  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚ, Ă&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC; &  " f Â&#x2030; ÂłF &  o v Â? Hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź  š è\ Â&#x2122; ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; int size() â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z :  Ă&#x152; oĂ&#x203A; Ÿà Ă&#x201D;\  e Â? Â&#x201D; Hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; è_ > hĂ&#x192; Âş\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; void clear() Ă&#x2013; ÂłÂ&#x201A; Ă?Z :  Ă&#x152; oĂ&#x203A; Ÿà Ă&#x201D;\  e Â? Â&#x201D; HÂ&#x2014;  ¸Â&#x17D; Hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; è\ ÂŚ]  j Ă´ Ă&#x2021;  . â&#x20AC;˘  â&#x20AC;&#x201C; boolean isEmpty() â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z :  Ă&#x152; oĂ&#x203A; Ÿà Ă&#x201D; q # Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  true\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚĂ&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; boolean isFull() â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z :  Ă&#x152; oĂ&#x203A; Ÿà Ă&#x201D; T ` q e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  true\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚĂ&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; boolean gotoBeginning() b Â&#x201A; 9 Ă?Z :  Ă&#x152; oĂ&#x203A; Ÿà Ă&#x201D; q # Qe t Â&#x201D; ¡ § Ăş  Ă´ Ă&#x2021;  . â&#x20AC;˘  â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : o Ă&#x152; Ă&#x203A; Ÿà Ă&#x201D; q # Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚ, Ă&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC; &  " f\ ÂŚo  Ă&#x203A; Ÿà Ă&#x201D;_ % Â&#x192;6 §Ă&#x153; ÂŁ ÂźÂ&#x2013; Ă?s 1 x l Â&#x201C; ÂŚ true\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; boolean gotoEnd() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z :  Ă&#x152; oĂ&#x203A; Ÿà Ă&#x201D; q # Qe t Â&#x201D; ¡ § Ăş  Ă´ Ă&#x2021;  . â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : o Ă&#x152; Ă&#x203A; Ÿà Ă&#x201D; q # Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚ, Ă&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC; &  " f\ ÂŚo  Ă&#x203A; Ÿà Ă&#x201D;_ = QĂ&#x153; ĂĽ ÂźÂ&#x2013; Ă?s 1 x l  ÂŚ true\ Â&#x201C; ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; boolean gotoNext() 2


â&#x20AC;˘  b Â&#x201A; 9 Ă?Z :  Ă&#x152; oĂ&#x203A; Ÿà Ă&#x201D; q # Qe t Â&#x201D; ¡ § Ăş  Ă´ Ă&#x2021;  . â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : & Ă&#x152; " f o Ă&#x203A; Ÿà Ă&#x201D;_ = Q\ ĂĽ  e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚ, Ă&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC; &  " f\ ÂŚĂ&#x2022;  ÂŞ 6 §â&#x20AC;Ť×&#x203A;â&#x20AC;Ź ÂŁ šÂ&#x2122; è\ ÂŚ  o v Â&#x2022; ¸2 ¤ Â&#x; s1 x l Â&#x201C; ÂŚ true\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; boolean gotoPrior() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z :  Ă&#x152; oĂ&#x203A; Ÿà Ă&#x201D; q # Qe t Â&#x201D; ¡ § Ăş  Ă´ Ă&#x2021;  . â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : & Ă&#x152; " f o Ă&#x203A; Ÿà Ă&#x201D;_ % Â&#x192;6 §\ ÂŁ  e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚ, Ă&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC; &  " f\ ÂŚs  Â&#x201E; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; è\ ÂŚ  o  vÂ&#x2022; ¸2 ¤ Â&#x; s1 x l Â&#x201C; ÂŚ true\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; void showStructure() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : \ Ă&#x152; 6 O § ÂŁ â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : o Ă&#x152; Ă&#x203A; Ÿà Ă&#x201D;\  e Â? Â&#x201D; HÂ&#x2014;  ¸Â&#x17D; HĂ&#x152;  o^ Â? Â&#x2030;\ ÂŚĂ&#x2DC;  Τ  Ă´ 4 Ă&#x2021;  . ĂŤ Â&#x2013;Â&#x20AC; Ă&#x; Â&#x2022;o Â? Ă&#x203A; Ÿà Ă&#x201D; q # Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  â&#x20AC;&#x153;List is empty.â&#x20AC;?\  ÂŚĂ&#x2DC;  ÂŚ  Ă´ 4 § Ă&#x2021;  .  sB jÂ&#x2122; èĂ&#x2014; ÂźÂ? Hn  ! Q^

` ç ÂŚ3  q& l Ă&#x153; h ÂźÂ&#x2013; Ă?ĂŤ Â&#x2013; Ă&#x; 6 xÂ?   a ) .

4

PreLab â&#x20AC;˘ List ADTÂ? Hz  ´_  v 3\ Ăž  " f½ ¨Â&#x2030; ³ô & Ă&#x2021; PointList ADTĂź  <°  Â&#x201C; Ăş r7 Ă&#x2030; xĂ&#x20AC; ĂĄ Ă&#x201C;_ B jÂ&#x2122; èĂ&#x2014; Âź\ Ϋ  §s Ăş ] j/ NĂ´ B Ă&#x2021;  .   \  " fÂ? H9  tA Ăž Ă&#x203A; Âź [ ts Ăž / N: B xĂ&#x153; Â&#x; ÂźÂ&#x2013; Ă?] j/ NK B   Â? HB  jÂ&#x2122; èĂ&#x2014; Âź[ t` Ăž ÂŚ interfaceÂ&#x2013;  Ă?&

_ Ăą  # Â&#x152; 6 xĂ´   Ă&#x2021;  . s \ ÂŚ:  xK Â&#x; 9 tA Ăž Ă&#x203A; Âź\ ÂŚ  6 x   Â? H   6 x   \  > # QÂ&#x2039; ĂĄ " x 7Ă&#x20AC; Ă&#x201C;_ B jÂ&#x2122; èĂ&#x2014; Âź e ` Â&#x201D; ÂŚ  Â&#x201C; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź t  S Â&#x2030;Â&#x2019; X `  ÂŚĂ&#x2014;  ÂŚĂ&#x192;  Âşe > Â&#x201D;  9,  _ 9 tA Ăž Ă&#x203A; Âź\  @ /Ă´ Ă&#x2021;s  K \ ÂŚ  Â&#x201E; Ă&#x201C;Ă&#x153; ½ Âź Â&#x2013; Ă?~ > 1  Â? r9 Ă&#x2030; tA Ăž Ă&#x203A; Âź\ ÂŚ  6 x½   Ă&#x2030;Ă&#x192; + Âşe  Â&#x201D; . â&#x20AC;˘ interfaceÂ? H9  tA Ăž Ă&#x203A; Ÿß <Âť Ă&#x201E;  > &

_ Ăą  t ĂŤ Â&#x2013; Ă&#x; 6 §þ ÂŁ °  Â&#x201C; Ăş r Ă&#x2030; s & s h e  Â&#x201D; . â&#x20AC;&#x201C; interfaceÂ? HĂ?  r! l Q Ă&#x192;  Âş\ ÂŚ |  Ă&#x192; 9 Âş\  O . Ă&#x2022; ÂŞ Q  Â&#x153;Ă&#x192; Š ÂşÂ? H& 

_ Ăą ½ Ă&#x2030;Ă&#x192; + Âşe  Â&#x201D; . Â&#x201C; '  ` Â&#x2026;s Ă&#x203A; Âź\  &

_ Ăą Â? a ) Â&#x153;Ă&#x192; Š ÂşÂ? H   1 xĂ&#x153; l ÂźÂ&#x2013; Ă? public static finals  .   " f Â&#x153;Ă&#x192; Š Âş\ ÂŚÂ&#x201A;  Â&#x192;  ½  Ă&#x2030;M + :s  ` â&#x20AC;Ť×&#x203A;â&#x20AC;Ź ÂŚĂ&#x2019;  t| q Ă&#x152; Ă&#x201E; # Â&#x152;Â&#x2022; ¸Â? a ) . â&#x20AC;&#x201C; B jÂ&#x2122; èĂ&#x2014; Âź_ ? /6 x`   ÂŚ& 

_ Ăą ½ Ă&#x2030;Ă&#x192; + Âş\  O . 7 ¤, Â&#x2014; ÂŁ ¸Â&#x17D; HB  jÂ&#x2122; èĂ&#x2014; ÂźÂ? H abstract B  jÂ&#x2122; èĂ&#x2014; Âźs  . Ă&#x2022; ÂŞ Q  abstract v 0 >Ă&#x2014; Âź\ ÂŚ   6 x   t Â? H¡  §Â? Ăş H  . â&#x20AC;&#x201C; B jÂ&#x2122; èĂ&#x2014; ÂźÂ? H  1 xĂ&#x153; l ÂźÂ&#x2013; Ă? public B jÂ&#x2122; èĂ&#x2014; Âźs  .   " fÂ&#x201A; Â&#x192;  ½  Ă&#x2030;M + : public` ÂŚ  6 x   t ¡ § Ăş Â&#x2022; ¸Â? a ) . â&#x20AC;&#x201C; interface_  Â&#x201C; Ă&#x203A; ÂźÂ&#x2021; Ă&#x203A;  Âź\ ÂŚĂ&#x2019;  t$ q

½ Ă­ Ă&#x2030;Ă&#x192; + Âş\  O . â&#x20AC;˘ 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(); } Œ½  ¨Â&#x2030; Âł & Â? H ArrayList 9  tA Ăž Ă&#x203A; Âź\ ΢  a$

Ă­ r Â&#x161; ¸. â&#x20AC;˘ 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

Â&#x201E;  Ă&#x201E;Â&#x2122; Â&#x2013;Â&#x2030; ÂŹĂ&#x2039; ĂŹĂ?  ĂŚÂ&#x203A; P  ò Laboratory 5. Stack ADT

1

Â? Ă&#x2014;X Ă&#x2019; Ă&#x201E; ĂŹ â&#x20AC;˘ C \ ` P ÂŚs  6 x   Â&#x152; ## 6 3 xĂ&#x203A;   ÂźĂ&#x2014; Â&#x2DC; ADT\ Ăž Œ½  ¨Â&#x2030; ÂłK & Â&#x2018; r : .

2

4 ~ Âż â&#x20AC;˘ Ă&#x203A; ÂźĂ&#x2014; Â&#x2DC;Â&#x2022; Ăž ¸o Ă&#x203A; Ÿà Ă&#x201D;Ăź < Ă° Ă?t ø Â&#x2013; Ă?°  Â&#x201C; Ăş r Ă&#x2030; { _ 9 â&#x20AC;Ť×&#x203A;â&#x20AC;Ź šÂ&#x2122; è[ ts Ăž " fÂ&#x2013; Ă?Â&#x201A; +  AÂ&#x203A; Ăž a> ' \ ÂŚ t  Â&#x2022; ¸2 ¤Ă&#x201E; Â&#x; Âťt  Â? HX  <s ' ½ ¨Â&#x203A; ¸s  . s & Â&#x201C; h rĂ&#x203A; Ă&#x2030; ÂźĂ&#x2014; Â&#x2DC;\ Ăž  " fâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź šÂ&#x2122; èÂ? HÂ&#x2020;  Ă&#x201C; ½ Â&#x153;Ă&#x203A; Š ÂźĂ&#x2014; Â&#x2DC;d Ăž v(top)\   Ă&#x2020; Ă&#x2019;á &9, ] j Â&#x2022; ¸Â&#x2020; Ă&#x201C; ½ Â&#x153;d Š v\   " fs Ă&#x20AC; Ă&#x2019;# QÂ&#x201D;   . â&#x20AC;˘ C \ ` P ÂŚs  6 x   Â&#x152; #Ă&#x203A; ÂźĂ&#x2014; Â&#x2DC;` Ăž ά  ½Â&#x2030; Âł & l 0 AK  Object 9 tA Ăž Ă&#x203A; Âź\ ÂŚ  6 x½   Ă&#x2030;Ă&#x192; + Âşe  Â&#x201D; . Ă&#x2022; ÂŞ Q  Object 9 tA Ăž Ă&#x203A; Âź\ ÂŚ  6 x   Â&#x20AC; 4  ¤ Â&#x; ~ Ă&#x201C;d ½ (by copy)` Â&#x201D; ÂŚ  6 x½   Ă&#x2030;Ă&#x192; + Âş\ Â&#x201C; O ÂŚ, Â&#x201A; Ă?Â&#x203A; Ă&#x192; ¸~ Ă&#x201C;d ½ (by reference)` Â&#x201D; ÂŚ  6 x½   Ă&#x2030;Ă&#x192; + º¾ Ă&#x161;\ 1  \  O . Â&#x201A; Ă?Â&#x203A; Ă&#x192; ¸~ Ă&#x201C;d ½ ` Â&#x201D; ÂŚ   6 x   Â&#x20AC; 4  ¤ Â&#x; ~ Ă&#x201C;d ½ \ Â&#x201D;  q K  Â&#x153;@ Š /& Ă&#x153; h ÂźÂ&#x2013; Ă?½ ¨Â&#x2030; Âłs & ~ Â&#x201C; 1 ÂŚ/ Nç B Â&#x2013; Ă&#x; 6 x8   ¤Â&#x20AC; ÂŁ s   $

0 Ă­ xÂ&#x20AC; p \   " fa ~Ă&#x153; % Âź Ăź @Ă&#x201A; Ă&#x2019;\  " fĂ&#x152; o^ Â? Â&#x2030; _  Â&#x153;I Š \ ÂŚ& 

K Ăą Â&#x201D; ~  Ă&#x201C;Z ½ Ăź O @\   Â? r~ Ă&#x2030; Ă&#x201C;Z ½ Ă&#x153; O ÂźÂ&#x2013; Ă?Â&#x203A; ¸ Â&#x2022;½ Â&#x152; Ă&#x2030;Ă&#x192; + Âş e  Â&#x201D; . \ V)    s Ă&#x201D; Ă&#x161; Qo  _ ArrayListÂ? HÂ&#x201A;  Ă?Â&#x203A; Ă&#x192; ¸~ Ă&#x201C;d ½ ` Â&#x201D; ÂŚ  6 x   # Â&#x152;½ ¨Â&#x2030; ³á & &# Qe  Â&#x201D; . 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_  Ă&#x2DC; Τ   4 Ăľ  : 10 20 30 Âż º P  : forĂŤ H_  Ă&#x2DC; Τ   4 Ăľ  : 15 20 30 â&#x20AC;˘ Â&#x201C;  ' ` Â&#x2026;s Ă&#x203A; Âź\ ÂŚs  6 xĂ´   Ă&#x2021;4  ¤ Â&#x; ~ Ă&#x201C;d ½ ` Â&#x201D; ÂŚ  6 x   Â&#x20AC; 0  A\ V\  " f% Â&#x192;! 9 3 tA Ăž Ă&#x203A; Âź\  " f] j/ N B Â? Ht  &

Â? Ăą a~ ) Ă&#x201C;Z ½ Ăź O @\  Â? H  Â? r Ă&#x2030; Ă&#x201C;Z ½ ~ Ă&#x153; O ÂźÂ&#x2013; Ă?Ă&#x152; o^ Â? Â&#x2030;_  Â&#x153;I Š \ Œ¸  Â&#x203A; Â&#x2022;½ Â&#x152; Ă&#x2030;Ă&#x192; + Âş\  O .

1


â&#x20AC;˘ s z  ´_ v\ Ăž  " fÂ? H  6 §þ ÂŁ °  Â&#x201C; Ăş r Listable interface\ Ă&#x2030; ÂŚs  6 x   # Â&#x152;Ă&#x203A; ÂźĂ&#x2014; Â&#x2DC;` Ăž Œ½  ¨Â&#x2030; Âł & # Â&#x152;Â&#x2018; r : . public interface Listable extends Cloneable{ Object clone(); }  6 §Â&#x201C; ÂŁ r Listable interface ½ Ă&#x2030; ¨Â&#x2030; ³ô & Ă&#x2021;9  tA Ăž Ă&#x203A; Âź_ \ 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 â&#x20AC;˘ ½ ¨Â&#x203A; ¸: Â&#x201A; +  AĂ­ Ăž H"  f\ ÂŚ t  9, y Â&#x2022;â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Â&#x152; šÂ&#x2122; è_ Ă­ H"  fÂ? HÂś  Â&#x161;{ Ăş Â? 9 aĂ­ ) H"  f\  _ K  & 

Â? Ăą a ) . Ă&#x2020; Ă&#x2019;Â? HĂ&#x203A;  ÂźĂ&#x2014; Â&#x2DC;d Ăž v\   s Ă&#x20AC; Ă&#x2019;# Qt 9, ] j Â&#x2022; ¸Ă&#x203A; ÂźĂ&#x2014; Â&#x2DC;Â&#x2022; Ăž ¸d v\   " f sĂ&#x20AC; Ă&#x2019;# QÂ&#x201D;   . s z ´_  v\ Ăž  " fÂ? HC  \ ` P ÂŚs  6 xĂ´   Ă&#x2021;Ă&#x203A;  ÂźĂ&#x2014; Â&#x2DC; ADT\ Ăž Œ½  ¨Â&#x2030; ³ô & Ă&#x2021;  . â&#x20AC;˘ ½ ¨$

â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Ă­ šÂ&#x2122; è: Object { 9 _ â&#x20AC;Ť×&#x203A;â&#x20AC;Ź šÂ&#x2122; è[ t` Ăž ÂŚ$   Â&#x153;½ Š Ă&#x2030;C + \ , Ă&#x203A; P ÂźĂ&#x2014; Â&#x2DC;` Ăž ÂŚ]  H X  ½ Ă&#x2030;M + :Â&#x20AC; 9 â&#x20AC;Ť×&#x203A;â&#x20AC;Ź šô Ă&#x2021;Ă&#x203A;  ÂźĂ&#x2014; Â&#x2DC;d Ăž v& 

Â&#x2DC; Ăą Ă? â&#x20AC;˘ Â&#x192; Ă­  Â&#x2013; Ă&#x; Â&#x2018; rĂ&#x2019; : t$ q

 Ă­ : Stack() â&#x20AC;&#x201C; l â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : 6 Ă&#x152; x|   Ă&#x201C;s ž  DEF_STACK_CAPACITYÂ&#x201C;   Â&#x2018; Ă&#x203A; ÂźĂ&#x2014; Â&#x2DC;` Ăž ÂŚĂ&#x2019;  t$ q

Ă´ Ă­ Ă&#x2021;  . Ă&#x203A; Âź% 7 Â&#x2DC;_ Ă&#x2019; t$ q

Â? Ă­ H setup() B  jÂ&#x2122; è Âź\ Ă&#x2014; ÂŚs  6 xĂ´   Ă&#x2021;  . â&#x20AC;&#x201C; Ă&#x2019; t$ q

 Ă­ : Stack(int capacity) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : capacity>0 Ă&#x152; Ă&#x2013; ÂłÂ&#x201A; Ă?Z : capacity>0s Ă&#x152; Â&#x20AC; 6  x|   Ă&#x201C;s ž  capacityÂ&#x201C;  Â&#x2018; Ă&#x203A;  ÂźĂ&#x2014; Â&#x2DC;` Ăž ÂŚĂ&#x2019;  t$ q

Ă­ Â&#x201C; ÂŚ, Ă&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC; 6  x|   Ă&#x201C;s ž  â&#x20AC;˘  DEF_STACK_CAPACITYÂ&#x201C;   Â&#x2018; Ă&#x203A; ÂźĂ&#x2014; Â&#x2DC;` Ăž ÂŚĂ&#x2019;  t$ q

Ă´ Ă­ Ă&#x2021;  . Ă&#x203A; ÂźĂ&#x2014; Â&#x2DC;_ Ăž Ă&#x2019; t$ q

Â? Ă­ H setup() B  jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚs  6 xĂ´   Ă&#x2021;  . â&#x20AC;&#x201C; Ă&#x2019; t$ q

 Ă­ Â&#x2022; ¸š §s ÂĄ : void setup(int capacity) sB jÂ&#x2122; èĂ&#x2014; ÂźÂ? HĂ&#x2019;  t$ q

 Ă­ ĂŤ Â&#x2013; Ă&#x; 6 x   Ă&#x2122; ÂźÂ&#x2013; Ă? private B jÂ&#x2122; èĂ&#x2014; ÂźÂ&#x2013; Ă?ĂŤ Â&#x2013;Â&#x17D; Ă&#x; H  . â&#x20AC;˘  â&#x20AC;˘  9 bÂ&#x201A; Ă?Z : capacity>0, Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłĂ? Â&#x201A;Z :   Ă&#x152; x 6| Ă&#x201C;s ž  capacityÂ&#x201C;   Â&#x2018; Ă&#x203A; ÂźĂ&#x2014; Â&#x2DC;` Ăž ÂŚĂ&#x2019;  t$ q

Ă´ Ă­ Ă&#x2021;  . â&#x20AC;&#x201C; void push(Object newElement) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : newElement!=null, isFull()==false Ă&#x152; Ă&#x2013; ÂłÂ&#x201A; Ă?Z : h Ă&#x152; Dâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź šÂ&#x2122; è\ ÂŚĂ&#x203A;  ÂźĂ&#x2014; Â&#x2DC;d Ăž v\   Ă&#x2020; Ă&#x2019;Ă´ Ă&#x2021;  . â&#x20AC;˘  x p Ă´V Ă&#x2021; \Ăź @: StackOverflowException â&#x20AC;˘ 0 â&#x20AC;&#x201C; void pop() b Â&#x201A; 9 Ă?Z : isEmpty()==false Ă&#x152; â&#x20AC;˘  â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Âź Ă&#x152; Ă&#x203A;Ă&#x2014; Â&#x2DC;d Ăž v\   e Â? Â&#x201D; Hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; è\ ÂŚ]  j Ă´ Ă&#x2021;  . x p Ă´V Ă&#x2021; \Ăź @: StackUnderflowException â&#x20AC;˘ 0 â&#x20AC;&#x201C; Object top()

2


â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : isEmpty()==false Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Âź Ă&#x152; Ă&#x203A;Ă&#x2014; Â&#x2DC;d Ăž v\   e Â? Â&#x201D; Hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; è\ ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 # Â&#x152;ĂŻ r  . Ă&#x203A; ÂźĂ&#x2014; Â&#x2DC; Ăž ^ Â&#x2030;Â? H    t ¡ §Â? Ăş H  . â&#x20AC;˘ 0 x p Ă´V Ă&#x2021; \Ăź @: StackUnderflowException â&#x20AC;&#x201C; void clear() â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Âź Ă&#x152; Ă&#x203A;Ă&#x2014; Â&#x2DC;\ Ăž  e Â? Â&#x201D; HÂ&#x2014;  ¸Â&#x17D; Hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; è\ ÂŚ]  j Ă´ Ă&#x2021;  . â&#x20AC;&#x201C; boolean isEmpty() â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Âź Ă&#x152; Ă&#x203A;Ă&#x2014; Â&#x2DC;s Ăž q # Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  true\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚĂ&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; boolean isFull() â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Âź Ă&#x152; Ă&#x203A;Ă&#x2014; Â&#x2DC;s Ăž T ` q e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  true\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚĂ&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; void showStructure() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : \ Ă&#x152; 6 O § ÂŁ â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x203A; Ă&#x152; ÂźĂ&#x2014; Â&#x2DC;\ Ăž  e Â? Â&#x201D; HÂ&#x2014;  ¸Â&#x17D; Hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; è\ ÂŚ topĂ&#x201A;  Ă&#x2019;'  bottom t Ă&#x2DC; Τ  Ă´ 4 Ă&#x2021;  . ĂŤ Â&#x2013;Â&#x20AC; Ă&#x; Â&#x2022;Ă&#x203A; Â? ÂźĂ&#x2014; Â&#x2DC;s Ăž q # Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  â&#x20AC;&#x153;Stack  is empty.â&#x20AC;?\ ÂŚĂ&#x2DC;  Τ  Ă´ 4 Ă&#x2021;  . s B jÂ&#x2122; èĂ&#x2014; ÂźÂ? Hn  ! Q^

` ç ÂŚ3  q& l Ă&#x153; h ÂźÂ&#x2013; Ă?ĂŤ Â&#x2013; Ă&#x; 6 xÂ?   a ) .

4

PreLab â&#x20AC;˘ Pre-lab\  " fÂ? HC  \ ` P ÂŚs  6 x   # Â&#x152;Ă&#x203A; ÂźĂ&#x2014; Â&#x2DC;` Ăž Œ½  ¨Â&#x2030; Âł & t ĂŤ Â&#x2013; post-lab\ Ă&#x;  " fÂ? HÂ&#x192;    o  Ă&#x203A; Ÿà Ă&#x201D;\ ÂŚs  6 x   # Â&#x152;Ă&#x203A; ÂźĂ&#x2014; Â&#x2DC;` Ăž Œ½  ¨Â&#x2030; ³½ & Ă&#x2030; + s â&#x20AC;Ť×&#x203A;â&#x20AC;Ź   .   " f 6 §þ ÂŁ °  Â&#x201C; Ăş r Stack interface\ Ă&#x2030; ÂŚ& 

_ Ăą  # Â&#x152; 6 xĂ´   Ă&#x2021;  . public interface Stack { boolean isEmpty(); boolean isFull(); void clear(); void push(Object item) throws StackOverflowException; void pop() throws StackUnderflowException; Object top() throws StackUnderflowException; } â&#x20AC;˘ s Â&#x201C; '  ` Â&#x2026;s Ă&#x203A; Âź\ ÂŚ:  xK Â&#x; ¡ Â&#x2DC;Ă&#x192; Ăş Âşe 1 Â&#x201D; ws p s z  ´_ vĂ&#x201A; Ăž Ă&#x2019;' \ VĂź @% Â&#x192; o\ ÂŚ  6 x   # Â&#x152;Â&#x161; ¸Ă&#x20AC; Ă&#x201C;\ ÂŚ%  Â&#x192;o Ă´ Ă&#x2021;  . s \ ÂŚ0  AK  6 §þ ÂŁ  °  Â&#x201C; Ăş rÂż Ă&#x2030; Âş t \ VĂź @Â&#x192; %o Ăž t 9A Ă&#x203A; Âź\ ÂŚ& 

_ Ăą  # Â&#x152; 6 xĂ´   Ă&#x2021;  . 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); } } Ă&#x152;` Â&#x2026;s t \  e Â? Â&#x201D; H lab05.zip\  ÂŚ  ĂŽ r~  Ă&#x17D; Ă&#x192;  Stack interface\ Œ½  ¨Â&#x2030; ³ô & Ă&#x2021; ArrayStack\  ÂŚ  6 xK   Â&#x2018; r : . â&#x20AC;˘ < â&#x20AC;&#x201C; TestStack` ÂŚs  6 xĂ´   Ă&#x2021;Â&#x2026;  _Ă&#x203A; Ÿà Ă&#x201D;~ Ă&#x201C;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


  Â&#x17D; 7 xĂ&#x20AC; ĂĄ Ă&#x201C; Ă­  Â&#x192; Â&#x2013; Ă&#x;   ĂŤ Â&#x2013;e Ă&#x; Â? Â&#x201D; H 

Ă&#x201E; â Âş Ă­  Â&#x192; Â&#x2013; Ă&#x;  Ă&#x2014; ĂŚ^  ?á o &# Qe Â? Â&#x201D; H 

Ă&#x201E; â Âş1 Ă­  Â&#x192; Â&#x2013; Ă&#x;  Ă&#x2014; ĂŚ^  ?á o &# Qe Â? Â&#x201D; H 

Ă&#x201E; â Âş2 ¸Â&#x17D; Â&#x2014; HÂ&#x192;  Ă­  Â&#x2013; Ă&#x;  = Q\ ĂĽ  e Â? Â&#x201D; H 

Ă&#x201E; â Âş 0 ž Âşl  Â&#x2013;{ Ă&#x; ĂŠ Ă&#x2022; 9 w Ăź  ¢ p a$

Ă­ Ă­ Â&#x2013;Ă&#x2022; Ă&#x; td Ăź  Â&#x201D;

6

Ă­Ăź Â&#x2013; Ă&#x; t Ă&#x2022;d  Â&#x201D; 34+ 34+52/* 93*2+14675-+* 20/ 9 4+

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

q Â&#x201C; ÂŚ

PostLab â&#x20AC;˘  Â&#x192;  ½  ¨Â&#x203A; ¸\ ÂŚs  6 x   # Â&#x152;Ă&#x203A; ÂźĂ&#x2014; Â&#x2DC;` Ăž Œ½  ¨Â&#x2030; ³½ & Ă&#x2030; +

Ă&#x201E; â Âş\  Â? H  6 §þ ÂŁ °   ĂşÂ&#x201C; r inner 9 Ă&#x2030; tA Ăž Ă&#x203A; Âź\ ÂŚ& 

_ Ăą  # Â&#x152; 6 xĂ´   Ă&#x2021;  . inner 9 tA Ăž  Ă&#x203A; Ÿê Ă?9 ø tA Ăž Ă&#x203A; Âź? /Ă&#x201A; Ă&#x2019;\  &

_ Ăą Â? a9 ) tA Ăž Ă&#x203A; Âź\ Ϋ  Â&#x2DC;Ă´ Ăş Ă&#x2021;  . private class StackNode{ public Object info; public StackNode next; } â&#x20AC;˘ Â&#x192;   ½  ¨Â&#x203A; ¸\ ÂŚ  s6 x   Â&#x20AC; Ă&#x203A;  ÂźĂ&#x2014; Â&#x2DC;s Ăž T ` q Â? H 

Ă&#x201E; â ÂşÂ? HÂ&#x201C;  ÂŚ 9 t ¡ § Ăş Â&#x2022; ¸Â? a ) . ΢  a$

Ă­ r Â&#x161; ¸. (Listable Â&#x201C; '  ` Â&#x2026;s Ă&#x203A; Âź\ ÂŚs  6 x   # Â&#x152;4 ¤ Â&#x; ~ Ă&#x201C;d ½ ` Â&#x201D; Œ½  ¨Â&#x2030; ³ô & Ă&#x2021;  .) â&#x20AC;˘ LinkedStack.java\ â&#x20AC;˘ ¢ a$

Ă­ Â&#x20AC;  TestStack`  ÂŚs  6 x   # Â&#x152;  Â&#x17D; K Â&#x2018; 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


â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : capacity>0, Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : capacity>0s Ă&#x152; Â&#x20AC; 6  x|   Ă&#x201C;s ž  capacityÂ&#x201C; Â&#x2018;  Ă&#x2021;  Š\ ÂŚĂ&#x2019;  t$ q

Ă­ Â&#x201C; ÂŚ, Ă&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC; 6  x|   Ă&#x201C;s ž  DEF_QUEUE_CAPACITYÂ&#x201C;   Â&#x2018; Ă&#x2021; Š\ ÂŚĂ&#x2019;  t$ q

Ă´ Ă­ Ă&#x2021;  . Ă&#x2021; Š_ Ă&#x2019; t$ q

Â? Ă­ H setup() B  jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚs  6 xĂ´   Ă&#x2021;  . â&#x20AC;&#x201C; Ă&#x2019; t$ q

 Ă­ Â&#x2022; ¸š §s ÂĄ : void setup(int capacity) â&#x20AC;˘  sB jÂ&#x2122; èĂ&#x2014; ÂźÂ? HĂ&#x2019;  t$ q

 Ă­ ĂŤ Â&#x2013; Ă&#x; 6 x   Ă&#x2122; ÂźÂ&#x2013; Ă? private B jÂ&#x2122; èĂ&#x2014; ÂźÂ&#x2013; Ă?ĂŤ Â&#x2013;Â&#x17D; Ă&#x; H  . â&#x20AC;˘  9 bÂ&#x201A; Ă?Z : capacity>0 Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłĂ? Â&#x201A;Z :   Ă&#x152; x 6| Ă&#x201C;s ž  capacityÂ&#x201C;   Â&#x2018; Ă&#x2021; Š\ ÂŚĂ&#x2019;  t$ q

Ă´ Ă­ Ă&#x2021;  . â&#x20AC;&#x201C; void enq(Object newElement) b Â&#x201A; 9 Ă?Z : newElement!=null, isFull()==false Ă&#x152; â&#x20AC;˘  â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : h Ă&#x152; DĂ&#x152; o^ Â? Â&#x2030;\ ÂŚp   Âą+ '\  Ă&#x2020; Ă&#x2019;Ă´ Ă&#x2021;  . â&#x20AC;˘ \ VĂź @: QueueOverflowException, o Ă&#x203A; Ÿà Ă&#x201D; T ` q e ` Â&#x201D; ÂŚM  :Âľ Ă?Ă&#x2019; 1 t q â&#x20AC;&#x201C; Object deq() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : isEmpty()==false Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Âą Ă&#x152; ¡ p ÂĄ\ Ăş  e Â? Â&#x201D; HĂ&#x152;  o^ Â? Â&#x2030;\ ÂŚ]  j  Â&#x201C; ÂŚ, s Ă&#x152; o^ Â? Â&#x2030;\ ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 # Â&#x152;ĂŻ r  . â&#x20AC;˘ \ VĂź @: QueueUnderflowException, o Ă&#x203A; Ÿà Ă&#x201D; q # Qe ` Â&#x201D; ÂŚM  :Âľ Ă?Ă&#x2019; 1 t q â&#x20AC;&#x201C; void clear() â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Š Ă&#x152; Ă&#x2021;\  e Â? Â&#x201D; HÂ&#x2014;  ¸Â&#x17D; HĂ&#x152;  o^ Â? Â&#x2030;\ ÂŚ]  j Ă´ Ă&#x2021;  . â&#x20AC;&#x201C; boolean isEmpty() â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Š Ă&#x152; Ă&#x2021;  q# Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  true\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚĂ&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; boolean isFull() Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Š Ă&#x152; Ă&#x2021; T ` q e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  true\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚĂ&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;˘  â&#x20AC;&#x201C; void showStructure() b Â&#x201A; 9 Ă?Z : \ Ă&#x152; 6 O § ÂŁ â&#x20AC;˘  â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2021; Ă&#x152; Š\  e Â? Â&#x201D; HÂ&#x2014;  ¸Â&#x17D; HĂ&#x152;  o^ Â? Â&#x2030;\ ÂŚĂ&#x2021;  Š_  p¡ Âą ÂĄ\ Ăş  e Â? Â&#x201D; Hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; èĂ&#x201A; Ă&#x2019;'  Y V@ /Â&#x2013; Ă?Ă&#x2DC; Τ  Ă´ 4 Ă&#x2021;  . ĂŤ Â&#x2013;Â&#x20AC; Ă&#x; Â&#x2022;Ă&#x2021; Â? Š q # Q Ă&#x153; Â&#x201D; e ÂźÂ&#x20AC;  â&#x20AC;&#x153;Queue is empty.â&#x20AC;?\  ÂŚĂ&#x2DC;  Τ  Ă´ 4 Ă&#x2021;  . s B jÂ&#x2122; èĂ&#x2014; ÂźÂ? Hn  ! Q^ ç

` ÂŚ3  q& l Ă&#x153; h ÂźÂ&#x2013; Ă?ĂŤ Â&#x2013; Ă&#x; 6 xÂ?   a ) .

4

PreLab 1. â&#x20AC;˘  6 §þ ÂŁ °  Â&#x201C; Ăş r Queue interface\ Ă&#x2030; ÂŚ& 

_ Ăą Ă´ Ă&#x2021;  6 §\ ÂŁ  s  interface\ Œ½  ¨Â&#x2030; ³ô & Ă&#x2021; ArrayQueueĂź  < LinkedQueue\ Œ½  ¨ ³ô & Â&#x2030; Ă&#x2021;  . 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   # Â&#x152;½ ¨Â&#x2030; ³ô & Ă&#x2021;#  6 3 xĂ&#x2021;   Š ADTs Â&#x201C; ÂŚ, LinkedQueueÂ? HÂ&#x192;    ½  ¨Â&#x203A; ¸\ ÂŚs  6 x   # Â&#x152;½ ¨Â&#x2030; Âł & Ă´# Ă&#x2021;  6 3 xĂ&#x2021;   Š ADTs  . â&#x20AC;˘ s z  ´_ v\ Ăž  " f 6 x   Â? HÂż  Âş t \ VĂź @% Â&#x192;o 9 tA Ăž Ă&#x203A; ÂźÂ? 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); } } â&#x20AC;˘ < Ă&#x152;` Â&#x2026;s t \ Â e Â? Â&#x201D; H Lab06.zip

 { ` 9 ÂŚ  ĂŽ r~  Ă&#x17D; Ă&#x192;  ArrayQueueĂź < LinkedQueue\ ÂŚ  6 xK   Â&#x2018; r : . â&#x20AC;&#x201C; TestQueue.java\ ÂŚs  6 xĂ´   Ă&#x2021;_  Â&#x2026;Ă&#x203A; Ÿà Ă&#x201D;~ Ă&#x201C;Z ½ : main B O jÂ&#x2122; èĂ&#x2014; Âź_ '  Ă? P  : Â&#x201C; ¢  ¸Â? HÂż  º P  : Â&#x201C; `  ÂŚĂ&#x2026;  Ă&#x2019;$ % 3 Â&#x192; o  # Â&#x152;y Â&#x2022;½ Â&#x152; ¨Â&#x2030; Âł` & ÂŚ_  Â&#x2026;Ă&#x203A; Ÿà Ă&#x201D;K Â&#x2018; r : .   Â&#x17D; 7 xĂ&#x20AC; ĂĄ Ă&#x201C; 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 Â&#x201C; ÂŚ

â&#x20AC;˘ Palindrome` ÂŚ   Â&#x17D;  Â? HĂĄ  Ă&#x201D;Â&#x2013; Ă?Ă&#x2022; ÂŞĂ? Â&#x203A;` Ăž ÂŚĂ&#x2021;  Šß <Ă&#x203A; ÂźĂ&#x2014; Â&#x2DC;` Ăž ÂŚÂ&#x2014;  ¸¿ Âş 6 x   # Â&#x152;½ ¨Â&#x2030; ³ô & Ă&#x2021;  . Palindromes ĂŞ Ă?¡ ø ÂĄĂ&#x153; Ăş ÂźÂ&#x2013; Ă?{ Ă&#x153; 9 Âź + ' Â&#x2013; Ă?{ 9 Ă&#x153; Âź °  Â&#x201C; Ăş rĂŤ Ă&#x2030; H  \ ` P ÂŚĂş  Â&#x2DC; ´ô Ă&#x2021;  . \ V\ ÂŚ[  t# Ăž Q â&#x20AC;&#x153;madamâ&#x20AC;?Â&#x201C; r palindromes Ă&#x2030;  . â&#x20AC;˘ Ă&#x2021; Šß <Ă&#x203A; ÂźĂ&#x2014; Â&#x2DC;` Ăž ÂŚ  s6 xĂ´   Ă&#x2021; Palindrome    Â&#x17D; ¡ Â&#x2DC;Â&#x201C; Ăş ÂŚo 7 § ÂŁ â&#x20AC;&#x201C; ĂŠ Â&#x2013;> Ă&#x;  1. h DĂ&#x2021; Šß <D hĂ&#x203A; ÂźĂ&#x2014; Â&#x2DC;` Ăž ÂŚĂŤ  Â&#x2013;Â&#x17D; Ă&#x; H  . Â&#x2013;> Ă&#x;  2. ĂŤ H  \ \ P  e Â? Â&#x201D; Hy  Â&#x2022;ĂŤ Â&#x152; H  \  @ /K  6 §` ÂŁ ÂŚĂ´  Ă&#x2021;  . â&#x20AC;&#x201C; ĂŠ â&#x20AC;˘  ĂŤ H  %

ĂŤ ò H  s Â&#x20AC; Â&#x2122;  èÍ H  Â&#x2013; Ă?  

Ă´ â Ă&#x2021;  . â&#x20AC;˘ s  ĂŤ H \ ÂŚĂ&#x203A;  ÂźĂ&#x2014; Â&#x2DC;\ Ăž  pushĂ´ Ă&#x2021;  . â&#x20AC;˘ s ĂŤ H  \ ÂŚĂ&#x2021;  Š\  enqueueĂ´ Ă&#x2021;  . â&#x20AC;&#x201C; ĂŠ Â&#x2013;> Ă&#x;  3. stillPalindromes  Â? H boolean   Ă&#x192;  Âş\ ÂŚ trueÂ&#x2013;  Ă?[ & O

Ă´ Ăą Ă&#x2021;  . â&#x20AC;&#x201C; ĂŠ Â&#x2013;> Ă&#x;  4. Š Ă&#x2021;\  Í H   Â&#x152; Â&#x2122; z e Â&#x201C; Â&#x201D; ÂŚ stillPalindromes Â&#x201A; Ă?s Ă&#x192; Â&#x20AC;   6 §` ÂŁ ÂŚĂŹ  Ă?4 ø ¤ô Â&#x; Ă&#x2021;  . â&#x20AC;˘ Š Ă&#x2021; \" fĂŤ H    \ ÂŚ dequeue  # Â&#x152;Ă&#x203A; Âź% Â&#x2DC;\ 7  top\  e Â? Â&#x201D; HĂŤ  H  Ăź <q Â&#x201C; §ô Ă&#x2021;  . â&#x20AC;˘ °  Ÿ Ăş Ă&#x153;Â&#x20AC; Âź  Ă&#x203A;Ă&#x2014; Â&#x2DC;\ Ăž  " f pop` ÂŚ  Â&#x201C; ÂŚ,  Ă&#x2DC; Ă&#x201D;Â&#x20AC;  stillPalindrome`  ÂŚ falseÂ&#x2013;  Ă?[ & O

Ă´ Ăą Ă&#x2021;  . < Palindrome.java\ ÂŚ  ĂŽ r~  Ă&#x17D; Ă&#x192; ¢ a$

Ă­  . â&#x20AC;˘ Palindrome.zipĂź

5

InLab 1 â&#x20AC;˘  í¨ H Â&#x160;Ă&#x2021; 8 ŠÂ? H   _ Â&#x; Ă­Â&#x201C; '  ĂŤ Â&#x2013;` Ă&#x; ÂŚs  6 x   # Â&#x152;Ă&#x2021; Š\ ÂŚĂ&#x201E;  Âťt ½ Ă&#x2030;Ă&#x192; + Âşe  Â&#x201D; . s M : frontÂ&#x2DC; Ă? Â? H rear\  ÂŚĂ&#x201E;  Âťt K  Ă&#x2021; Š_  % Â&#x192;6 §þ ÂŁ = Q` ĂĽ ÂŚ1  xr l \  ]  X H  l  6 xs     . â&#x20AC;˘ LinkedQueue\ ÂŚ  Â&#x153;5 Š q~ Ă&#x2026; Ă&#x17D;Â&#x201C; Ă&#x192; r CircularLinkedQueue\ Ă&#x2030; ΢  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Â&#x2122; èĂ&#x2014; Âź_ ½ ¨Â&#x2030; ÂłÂ&#x201C; & r Ă&#x2030; 6 §Ă&#x2022; ÂŁ ÂŞa >` Ă&#x2039; ÂŚÂ&#x201A;  Ă?Â&#x203A; Ă&#x192; ¸  . â&#x20AC;˘ enq B

3


queue

rear

queue

rear

3

2

A

A

B

1

queue

rear

3

2

A

B

B 1

â&#x20AC;˘ deq B jÂ&#x2122; èĂ&#x2014; Âź_ ½ ¨Â&#x2030; ÂłÂ&#x201C; & r Ă&#x2030; 6 §Ă&#x2022; ÂŁ ÂŞa >` Ă&#x2039; ÂŚÂ&#x201A;  Ă?Â&#x203A; Ă&#x192; ¸  .

queue

rear

queue

rear

A

A

B

1 queue

rear

A

B

C

1

6

InLab 2 â&#x20AC;˘ Ă&#x201E; ÂşÂ&#x201A; Ă­  H0  AĂ&#x2021; Šê Ă?[ ø t# Ăž QÂ? HĂ­  H"  fĂź < Â&#x153;Â&#x203A; Š a\ ' s O Ă&#x201E; ÂşÂ&#x201A; Ă­  H0  A\     Â&#x161; ¸Â? HĂ­  H"  f  & 

á Ăą &Â? HĂ&#x2021;  Š\ Ϋ  Â&#x2DC;Ă´ Ăş Ă&#x2021;  . â&#x20AC;˘ Ă&#x201E; ÂşÂ&#x201A; Ă­  H0  AĂ&#x2021; ŠÂ? H enqueue½  Ă&#x2030;M + :Ă&#x201E; ÂşÂ&#x201A; Ă­  H0  A\    Âś Â&#x161;{ Ăş á 9 &Â? H0  Au   & 

á Ăą &Â&#x2022; ¸2 ¤½ Â&#x; ¨Â&#x2030; ³½ & Ă&#x2030;Ă&#x192; + Âşe Â&#x201C; Â&#x201D; ÂŚ, Ă?@ ø ĂŹ /Â&#x2013; Ă? dequeue½ Ă&#x2030;M + :Ă&#x2021; Š\  e Â? Â&#x201D; HÂ&#x2014;  ¸Â&#x17D; Hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; è\ ÂŚ   Â&#x17D;  # Â&#x152; dequeueá &Â? Hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; è\ ÂŚ  & 

½ Ăą Ă&#x2030;Ă&#x192; + Âşe  Â&#x201D; . â&#x20AC;˘ s z  ´_ v\ Ăž  " fÂ? HÂ&#x201E;    ~ Ă&#x201C;Z ½ ` O Œ½  ¨Â&#x2030; ÂłK & Â&#x2018; 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 } } ¨Â&#x2030; ³½ & Ă&#x2030;M + :Â&#x201C; ÂŚ9  Â&#x2020; Ă&#x201C; ½ â&#x20AC;˘ ½ 4


â&#x20AC;&#x201C; q Â&#x201C; §Â? H compareTo j  BÂ&#x2122; èĂ&#x2014; Âź\ ÂŚs  6 xĂ´   Ă&#x2021;  . â&#x20AC;&#x201C; C \ Â&#x201C; P rĂ­ Ă&#x2030; H¨  Â&#x160;C 8 \ s P  . â&#x20AC;&#x201C; Ă&#x2021; Š q # Qe Â? Â&#x201D; H 

Ă&#x201E; â Âş: front Ă&#x201D; ÂŚÂ  , rear 7  x ÂŁ â&#x20AC;&#x201C; p  ¹¡ ÂĄ\ Ăş  œ Â&#x161;{ Ăş 9 á &# Q  Â? H 

Ă&#x201E; â Âş: front y Â&#x2122;Â&#x2122; Â&#x152; è, rear Ă&#x201D; ÂŚÂ    â&#x20AC;&#x201C; p  Âą+ '\  œ Â&#x161;{ Ăş 9 á &# Q  Â? H 

Ă&#x201E; â Âş: front Ă&#x201D; ÂŚÂ  , rear 7  x ÂŁ â&#x20AC;&#x201C; Ă&#x2014; Ìç  Â&#x2013;\ Ă&#x;  œ Â&#x161;{ Ăş 9 á &# Q  Â? H 

Ă&#x201E; â Âş:  Â&#x153;S Š \ !     2 § ÂŁ

7

PostLab â&#x20AC;˘ Ă&#x201E; ÂşÂ&#x201A; Ă­  H0  AĂ&#x2021; Š\ ÂŚÂ&#x192;    ½  ¨Â&#x203A; ¸\ ÂŚs  6 x   # Â&#x152;½ ¨Â&#x2030; ÂłK & Â&#x2018; r : . â&#x20AC;˘ Â&#x192;   ½  ¨Â&#x203A; ¸\ ÂŚ  s6 xĂ´   Ă&#x2021;ĂŽ  rÂ&#x201A;  Ă­  H0  AĂ&#x2021; ŠÂ? H frontĂŤ  Â&#x2013;` Ă&#x; ÂŚs  6 x   # Â&#x152;½ ¨Â&#x2030; ³½ & Ă&#x2030;Ă&#x192; + Âşe  Â&#x201D; .  6 §` ÂŁ ΢  a$

Ă­  . public class PriorityLinkedQueue extends LinkedQueue{ public PriorityLinkedQueue(){ super(); } public void enq(Object item){ // implement this method } } â&#x20AC;˘ ½ ¨Â&#x2030; ³½ & Ă&#x2030;M + :Â&#x201C; ÂŚ9  Â&#x2020; Ă&#x201C; ½ Â&#x201C; §Â? H compareTo j  BÂ&#x2122; èĂ&#x2014; Âź\ ÂŚs  6 xĂ´   Ă&#x2021;  . â&#x20AC;&#x201C; q â&#x20AC;&#x201C; Ă&#x2021; Š q # Qe Â? Â&#x201D; H 

Ă&#x201E; â Âş,  p¡ Âą ÂĄ\ Ăş  œ Â&#x161;{ Ăş 9 á &# Q  Â? H 

Ă&#x201E; â Âş,  p+ Âą '\  œ Â&#x161;{ Ăş 9 á &# Q  Â? H 

Ă&#x201E; â Âş, Ă&#x2014; Ìç  Â&#x2013;\ Ă&#x;  œ Â&#x161;{ Ăş á 9 &# Q   Â? H 

Ă&#x201E; â Âş\ ÂŚÂ&#x201C;  ÂŚ 9 # Â&#x152;½ ¨Â&#x2030; ³ô & Ă&#x2021;  .

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


â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : capacity>0 Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : capacity>0s Ă&#x152; Â&#x20AC; 6  x|   Ă&#x201C;s ž  capacityÂ&#x201C;   ListNode[ t` Ăž ÂŚ$   Â&#x153;½ Š Ă&#x2030;C + \ ` P ÂŚĂ&#x2019;  t$ q

Ă­ Â&#x201C; ÂŚ, Ă&#x2022; ÂŞ t O X ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC; 6  x|   Ă&#x201C;s ž  DEF_LIST_CAPACITYÂ&#x201C;   ListNode[ t` Ăž ÂŚ$   Â&#x153;½ Š Ă&#x2030;C + \ ` P ÂŚĂ&#x2019;  t$ q

Ă´ Ă­ Ă&#x2021;  . ¢ ¸ô Ă&#x2021;Â&#x2014;  ¸ HÂ&#x2020;  Â&#x17D; Ă&#x201C;[ ½ t` Ăž ÂŚÂ&#x192;      Â? HÂ&#x2018;  o  Ă&#x203A; Ÿà Ă&#x201D;\ Œ½  ¨ ¤ô ÂĄ Ă&#x2021;  . C \ _ P Ă&#x2019; t$ q

Ăľ Ă­ Â&#x2018; o  Ă&#x203A; Ÿà Ă&#x201D;_ ½ ¨ ¤Â&#x201C; ÂĄ r setup() B Ă&#x2030; jÂ&#x2122; èĂ&#x2014; Âź ÂŚ  \ s6 xĂ´   Ă&#x2021;  . â&#x20AC;&#x201C; Ă&#x2019; t$ q

 Ă­ Â&#x2022; ¸š §s ÂĄ : void setup(int capacity) â&#x20AC;˘  sB jÂ&#x2122; èĂ&#x2014; ÂźÂ? HĂ&#x2019;  t$ q

 Ă­ ĂŤ Â&#x2013; Ă&#x; 6 x   Ă&#x2122; ÂźÂ&#x2013; Ă? private B jÂ&#x2122; èĂ&#x2014; ÂźÂ&#x2013; Ă?ĂŤ Â&#x2013;Â&#x17D; Ă&#x; H  . â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : 6 Ă&#x152; x|   Ă&#x201C;s ž  capacityÂ&#x201C;  ListNode[  t` Ăž ÂŚ$   Â&#x153;½ Š Ă&#x2030;C + \ ` P ÂŚĂ&#x2019;  t$ q

Ă­ Â&#x201C; ÂŚ, Â&#x2014; ¸Â&#x17D; HÂ&#x2020;  Ă&#x201C;[ ½ t` Ăž ÂŚÂ&#x192;      Â? H    Â&#x2018; oĂ&#x203A; Ÿà Ă&#x201D;\ ά  ½ ¤ô ÂĄ Ă&#x2021;  . â&#x20AC;&#x201C; abstract void insert(Object item) b Â&#x201A; 9 Ă?Z : item!=null, isFull()==false Ă&#x152; â&#x20AC;˘  â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : & Ă&#x152;

§ ù =/q > &

§ Ăą =o > Ă&#x203A; Ÿà Ă&#x201D;\     Ă&#x2DC; Ă&#x201D; . â&#x20AC;˘ \ VĂź @: ListOverflowException, o Ă&#x203A; Ÿà Ă&#x201D; T ` q e ` Â&#x201D; ÂŚM  :Âľ Ă?Ă&#x2019; 1 t q â&#x20AC;&#x201C; abstract boolean delete(Object item) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : item!=null, isEmpty()==false Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2019; Ă&#x152; Ă&#x2026;# QÂ&#x201D; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; è o Ă&#x203A; Ÿà Ă&#x201D;\  e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;   Â&#x2022;] Â&#x152; j Â&#x201C; ÂŚ true\ ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚ\ Ă&#x153; O ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;˘ \ VĂź @: ListUnderflowException, o Ă&#x203A; Ÿà Ă&#x201D; q # Qe ` Â&#x201D; ÂŚM  :Âľ Ă?Ă&#x2019; 1 t q â&#x20AC;&#x201C; abstract boolean search(Object item) b Â&#x201A; 9 Ă?Z : item!=null, isEmpty()==false Ă&#x152; â&#x20AC;˘  â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2019; Ă&#x152; Ă&#x2026;# QÂ&#x201D; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; è o Ă&#x203A; Ÿà Ă&#x201D;\  e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  true\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚ\ Ă&#x153; O ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;˘ \ VĂź @: ListUnderflowException, o Ă&#x203A; Ÿà Ă&#x201D; q # Qe ` Â&#x201D; ÂŚM  :Âľ Ă?Ă&#x2019; 1 t q â&#x20AC;&#x201C; abstract Object retrieve(Object item) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : item!=null, isEmpty()==false Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2019; Ă&#x152; Ă&#x2026;# QÂ&#x201D; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; è o Ă&#x203A; Ÿà Ă&#x201D;\  e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC; Ă&#x2022;  ÂŞ _ â&#x20AC;Ť×&#x203A;â&#x20AC;Ź 4 ¤ Â&#x; Â&#x2018; r` : ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚ, \ Ă&#x153; O ÂźÂ&#x20AC;  null`  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;˘ \ VĂź @: ListUnderflowException, o Ă&#x203A; Ÿà Ă&#x201D; q # Qe ` Â&#x201D; ÂŚM  :Âľ Ă?Ă&#x2019; 1 t q â&#x20AC;&#x201C; void clear() Ă&#x2013; ÂłÂ&#x201A; Ă?Z :  Ă&#x152; oĂ&#x203A; Ÿà Ă&#x201D;\  e Â? Â&#x201D; HÂ&#x2014;  ¸Â&#x17D; HĂ&#x152;  o^ Â? Â&#x2030;\ ÂŚ]  j Ă´ Ă&#x2021;  .  Â&#x2018; o Ă&#x203A; Ÿà Ă&#x201D;\ ÂŚD  h\ v>   r ½ ¨ ¤ô ÂĄ Ă&#x2021;  . â&#x20AC;˘  â&#x20AC;&#x201C; boolean isEmpty() â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z :  Ă&#x152; oĂ&#x203A; Ÿà Ă&#x201D; q # Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  true\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚĂ&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; boolean isFull() â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z :  Ă&#x152; oĂ&#x203A; Ÿà Ă&#x201D; T ` q e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  true\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚĂ&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; void showStructure() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : \ Ă&#x152; 6 O § ÂŁ â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : o Ă&#x152; Ă&#x203A; Ÿà Ă&#x201D;\  e Â? Â&#x201D; HÂ&#x2014;  ¸Â&#x17D; HĂ&#x152;  o^ Â? Â&#x2030;\ ÂŚĂ&#x2DC;  Τ  Ă´ 4 Ă&#x2021;  . ĂŤ Â&#x2013;Â&#x20AC; Ă&#x; Â&#x2022;o Â? Ă&#x203A; Ÿà Ă&#x201D; q # Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  â&#x20AC;&#x153;List is empty.â&#x20AC;?\  ÂŚĂ&#x2DC;  ÂŚ  Ă´ 4 § Ă&#x2021;  .  sB jÂ&#x2122; èĂ&#x2014; ÂźÂ? Hn  ! Q^

` ç ÂŚ3  q& l Ă&#x153; h ÂźÂ&#x2013; Ă?ĂŤ Â&#x2013; Ă&#x; 6 xÂ?   a ) .

4

PreLab â&#x20AC;˘ <` Ă&#x152; Â&#x2026;s t \  e Â? Â&#x201D; H list.zip`  ÂŚ  ĂŽ r~  Ă&#x17D; Ă&#x192;  ArrayLinkedList 9 tA Ăž Ă&#x203A; Âź\ ÂŚ  Â&#x153;5 Š q~ Ă&#x2026; Ă&#x17D;Â? Ă&#x192; H UnsortedArrayLinkedList\  ÂŚ  a$ ¢

Ă­  . â&#x20AC;˘ ¢ a$

Ă­ Â&#x20AC;  TestList.java\  ÂŚ  s6 x   # Â&#x152;½ ¨Â&#x2030; Âł_ & &

S Ăą Â&#x2030;$ X

` Ă­ ÂŚS  Â&#x2030; X Â&#x201C;   .

5

InLab â&#x20AC;˘ ArrayLinkedList Ăž t 9A Ă&#x203A; Âź\ ÂŚ  Â&#x153;5 Š q~ Ă&#x2026; Ă&#x17D;Â? Ă&#x192; 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


â&#x20AC;&#x201C; TreeUnderflowException: Ă  Ă&#x201D;o  q # Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC; Âľ  Ă?Ă&#x2019; 1 t q â&#x20AC;&#x201C; Object retrieve(Object item) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : item!=null, isEmpty()!=false, item instanceof Comparable Ă&#x152; Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2026; Ă&#x152; Ă&#x2019;# Q Â&#x201D; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź šÂ&#x2122; èß <°  Â&#x201C; Ăş rv Ă&#x2030; ° â&#x20AC;Ť`×&#x203A;â&#x20AC;Ź Ăş ÂŚ t  Â? Hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; è Ă  Ă&#x201D;o \  e Ă&#x153; Â&#x201D; ÂźÂ&#x20AC; Ă&#x2022;  ÂŞâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź šÂ&#x2122; è\ ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . ĂŹ Ă?@ ø /Â&#x2013; Ă? â&#x20AC;˘  Ă&#x153; O \ ÂźÂ&#x20AC;  null\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;˘ \ VĂź @ â&#x20AC;&#x201C; TreeUnderflowException: Ă  Ă&#x201D;o  q # Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC; Âľ  Ă?Ă&#x2019; 1 t q â&#x20AC;&#x201C; void clear() â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x201D; Ă&#x152; Ă o \  e Â? Â&#x201D; HÂ&#x2014;  ¸Â&#x17D; HÂ&#x201D;  ¸Ă&#x2014; Âź\ ÂŚ]  j Ă´ Ă&#x2021;  . â&#x20AC;&#x201C; boolean isEmpty() Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x201D; Ă&#x152; Ă o  q # Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  true\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚĂ&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;˘  â&#x20AC;&#x201C; boolean isFull() â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Â&#x2020; Ă&#x152; Ă&#x201C; ½ Â&#x153;Ă&#x192; Š Ă? Â&#x201A;. â&#x20AC;&#x201C; void showStructure() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : \ Ă&#x152; 6 O § ÂŁ â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă  Ă&#x152; Ă&#x201D;o \  e Â? Â&#x201D; HÂ&#x2014;  ¸Â&#x17D; HĂ&#x152;  o^ Â? Â&#x2030;\ ÂŚĂ&#x2014;  ĂŚ0  AĂ­ H  r~ Ă&#x201C;Z ½ Ă&#x153; O ÂźÂ&#x2013; Ă?Ă&#x2DC; Τ  Ă´ 4 Ă&#x2021;  . ĂŤ Â&#x2013;Â&#x20AC; Ă&#x; Â&#x2022;Ă  Â? Ă&#x201D;o  q # Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  â&#x20AC;&#x153;Tree  is empty.â&#x20AC;?\ ÂŚĂ&#x2DC;  Τ  Ă´ 4 Ă&#x2021;  . s B jÂ&#x2122; èĂ&#x2014; ÂźÂ? Hn  ! Q^

` ç ÂŚ3  q& l Ă&#x153; h ÂźÂ&#x2013; Ă?ĂŤ Â&#x2013; Ă&#x; 6 xÂ?   a ) .

4

PreLab â&#x20AC;˘ < Ă&#x152;` Â&#x2026;s t \  e Â? Â&#x201D; H lab08.zip`  ÂŚ  ĂŽ r~  Ă&#x17D; Ă&#x192;  BinarySearchTree.java\ ΢  a$

Ă­  . jÂ&#x2122; èĂ&#x2014; ÂźĂ&#x2014; ĂŚ\    6 §j ÂŁ BÂ&#x2122; è[ tĂŤ Ăž Â&#x2013; prelabĂ&#x153; Ă&#x; ÂźÂ&#x2013; Ă?¢ a$

Ă­  . â&#x20AC;˘ B public int iterSize(); public boolean iterSearch(Object item); public boolean delete(Object item); â&#x20AC;˘ iterSizeÂ? HF  ) ~ Ă&#x201C;Z ½ ` O ÂŚ  6 x   t ¡ §Â&#x201C; Ăş ÂŚĂ  Ă&#x201D;o _ e Â? Â&#x201D; HÂ&#x201D;  ¸Ă&#x2014; Âź_ > hĂ&#x192; Âş\ ÂŚ>  Ă­ Â&#x2013; Ă&#x; Â? HB  jÂ&#x2122; èĂ&#x2014; Âźs  . s B jÂ&#x2122; èĂ&#x2014; ÂźÂ? H  Ă&#x203A; ÂźĂ&#x2014; Â&#x2DC;` Ăž ÂŚ  6 x   9,  [ jĂ´ Ă&#x2021;/  ?6 xÂ&#x201C;   rs Ă&#x2030; Â? rÂ&#x201D; : ¸à Ă&#x201D;\ ÂŚÂ&#x201A;  Ă?Â&#x203A; Ă&#x192; ¸. â&#x20AC;˘ iterSearchÂ? HF  ) ~ Ă&#x201C;Z ½ ` O ÂŚ  6 x   t ¡ §Â&#x201C; Ăş ÂŚĂ&#x2026; Ă&#x2019;# Q Â&#x201D; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź šÂ&#x2122; èß <°  Â&#x201C; Ăş rv Ă&#x2030; ° â&#x20AC;Ť`×&#x203A;â&#x20AC;Ź Ăş ÂŚ t  Â? Hâ&#x20AC;Ť×&#x203A;â&#x20AC;Ź  šÂ&#x2122; è Ă  Ă&#x201D;o \  e Â? Â&#x201D; Ht    Â&#x17D;   # Â&#x152;Ă&#x2026; Ă&#x2019;Â? HB  jÂ&#x2122; èĂ&#x2014; Âźs  .  [ jĂ´ Ă&#x2021;?  /6 xÂ&#x201C;   rs Ă&#x2030; Â? rÂ&#x201D; : ¸à Ă&#x201D;\ ÂŚÂ&#x201A;  Ă?Â&#x203A; Ă&#x192; ¸. â&#x20AC;˘ deleteÂ? HĂ&#x2026;  Ă&#x2019;# QÂ&#x201D;   v° â&#x20AC;Ť`×&#x203A;â&#x20AC;Ź Ăş ÂŚ Â&#x201D;   â&#x20AC;Ť×&#x203A;â&#x20AC;Ź šÂ&#x2122; è\ Œš  Ă&#x201D; 1 Ă&#x2022; ÂŞÂ&#x201D; ¸Ă&#x2014; Âź\ ÂŚ  Â&#x2022; Â&#x152;] jK Ă&#x2026; Ă&#x2019;Â? HB  jÂ&#x2122; èĂ&#x2014; Âźs  . delete B jÂ&#x2122; èĂ&#x2014; ÂźÂ? H¢  a$

á Ă­ & # Qe t Â&#x201D; ĂŤ Â&#x2013;Ă&#x2022; Ă&#x; ÂŞ? /Ă&#x201A; Ă&#x2019;\  " f   x 6 Â? H deleteNodeĂź  < getPredecessorÂ? H½  ¨Â&#x2030; ³á & &# Qe t Â&#x201D; ¡ § Ăş . s Âż Âş? /Ă&#x201A; Ă&#x2019;B j Â&#x2122; èĂ&#x2014; Âź\ ΢  a$

Ă­  . deleteNodeÂ? H  Â&#x2022;] Â&#x152; j½ Ă&#x2030;Â&#x201D; + ¸Ă&#x2014; Âź\ Œš  Ă&#x201D;Â&#x201C; 1 r Ă&#x2030; Â&#x153;I Š \  " fĂ&#x2022; ÂŞÂ&#x201D; ¸Ă&#x2014; Âź\ ÂŚ  Â&#x2022;] Â&#x152; j Â? HB  jÂ&#x2122; èĂ&#x2014; Âźs  . ĂŤ Â&#x2013;Â&#x20AC; Ă&#x; Â&#x2022; Â? Â&#x2022; Â&#x152; ] j½ Ă&#x2030;Â&#x201D; + ¸Ă&#x2014; Âź ¢ aA , ¤, Â&#x161; ĂĄ ¸Â? rA Ă&#x2030; ¤ ĂĄ d Â&#x201D; Â&#x201D; ¸Ă&#x2014; Âź\ ÂŚÂ&#x2014;  ¸¿ Âş t Â&#x201C; ÂŚe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC; ¢  aA , ¤" ĂĄ fĂ&#x161; Ă&#x201D;Ă  Ă&#x201D;o \  " f  Â&#x153;H Š ° â&#x20AC;Ť`×&#x203A;â&#x20AC;Ź Ăş Œš  Ă&#x201D; 1  Ă´ Ă&#x2021;  . s  ` â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Œš  Ă&#x201D; 1 Ă&#x2026; Ă&#x2019;Â? HB  jÂ&#x2122; èĂ&#x2014; Âź getPredecessors  . â&#x20AC;˘ ¢ a$

Ă­ Â&#x20AC;  TestBST.java\  ÂŚs  6 x   # Â&#x152;½ ¨Â&#x2030; Âł_ & &

S Ăą Â&#x2030;$ X

` Ă­ ÂŚS  Â&#x2030;Â&#x201C; X    .   Â&#x17D; 7 xĂ&#x20AC; ĂĄ Ă&#x201C; insert search delete delete delete

5

"§

ĂŽ

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

l @ /& á� H  þ  

q Â&#x201C; ÂŚ iterSearch   Â&#x17D;   d s Â&#x201D; Â&#x2014; ¸¿ Âşe Â? Â&#x201D; HÂ&#x201D;  ¸Ă&#x2014; Âź_  Â&#x2022;] Â&#x152; j  d s Â&#x201D;   ĂŤ Â&#x2013;e Ă&#x; Â? Â&#x201D; HÂ&#x201D;  ¸Ă&#x2014; Âź_  Â&#x2022;] Â&#x152; j Â&#x2013;´ Ă&#x; ĂŠ Â&#x2DC;Â&#x201D; Ăş ¸Ă&#x2014; Âź_  Â&#x2022;] Â&#x152; j

InLab 1.  Â&#x201D;  Ă&#x2019; Â&#x17D; oĂ  Â? Ă&#x201D;o _ Â&#x2014; ¸_ vÂ&#x201C; Ăž ry Ă&#x2030; Â&#x2022;â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Â&#x152; šÂ&#x2122; è\ ÂŚÂś  Â&#x161;{ Ăş  9 Â? HĂ­  H"  f\  _ K  & 

Â? Ăą a ) . ĂŤ Â&#x2013;Â&#x20AC; Ă&#x; Â&#x2022;& Â?

§ Ăą =Â? > aĂ­ ) H"  fÂ&#x2013; Ă?Âś Â&#x161;{ Ăş 9 ½ Ă&#x2030; +

Ă&#x201E; â Âş\  Â? H  â&#x20AC;˘ s Ă  Ă&#x201D;o _ Z }s   â&#x20AC;Ť×&#x203A;â&#x20AC;Ź šÂ&#x2122; è_ > hĂ&#x192; ºÍ Â&#x2013; Ă&#x; p uá &Â? HÂź  Â&#x2020; # Ă&#x201C;s ž  Â&#x201D; Ă  Ă&#x201D;o  á &# QB Ă&#x201E; Âşq ´ òĂ&#x2013; ÂŚ&  s h  . Âź Â&#x2020; # Ă&#x201C;s ž  Â&#x201D; Ă  Ă&#x201D;o Â? HÂ&#x201A;  +  AÂ&#x192; Ăž   ½   ¨Â&#x203A; ¸ß < s  \  O . s \ ÂŚ>  hÂ&#x201A;   l 0 AK Ă  Ă&#x201D;o _ ç H+  A` Ăž Ϋ  Â?Ă&#x2020; Ăş Ă&#x2019;Â? H~  Ă&#x201C;Z ½ ` O ÂŚĂ&#x2019;  ty q Â&#x2022;½ Â&#x152; Ă&#x2030;Ă&#x192; + Âşe  Â&#x201D; . s \ ÂŚ0  AĂ´ Ă&#x2021;  6 § ÂŁ B jÂ&#x2122; èĂ&#x2014; Âź\ ΢  a$

Ă­ r Â&#x161; ¸.  [ jĂ´ Ă&#x2021;?  /6 xÂ&#x201C;   rs Ă&#x2030; Â? rÂ&#x201D; : ¸à Ă&#x201D;\ ÂŚÂ&#x201A;  Ă?Â&#x203A; Ă&#x192; ¸. 2


â&#x20AC;&#x201C; public void BalanceTree() â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x201D; Ă&#x152; Ă o  ¢ aÂ&#x201E; s   Â&#x201D; Ă  Ă&#x201D;o (complete binary tree) á &Â&#x2022; ¸2 ¤à Â&#x; Ă&#x201D;o \ ÂŚF  ½ ¨$

Ă´ Ă­ Ă&#x2021;  . â&#x20AC;˘ ¢ a$

Ă­ Â&#x20AC;  TestBST.java\  ÂŚs  6 x   # Â&#x152;½ ¨Â&#x2030; Âł_ & &

S Ăą Â&#x2030;$ X

` Ă­ ÂŚS  Â&#x2030;Â&#x201C; X    . s M : â&#x20AC;&#x2DC;Bâ&#x20AC;&#x2122; "

§ Î

` ĂŽ ÂŚ  6 xĂ´   Ă&#x2021;  .

6

InLab 2. â&#x20AC;˘ Ă&#x20AC; Ă&#x2019;Ă  Ă&#x201D;Â&#x201D; ¸Ă&#x2014; ÂźÂ? HĂ&#x201D;  Ă o Y UÂ&#x161; 6 \ 0\  e  Â&#x201D; Â&#x201C; ÂŚ 9, Ă&#x20AC; Ă&#x2019;Ă  Ă&#x201D;Â&#x201D; ¸Ă&#x2014; Âź_  d Â&#x201C; Â&#x201D; rY Ă&#x2030; UÂ&#x161; 6 \ 1\  e  Â&#x201D; Â&#x201C; ÂŚĂ´ Ă&#x2021;  . 7 ¤, Â&#x201D; ÂŁ ¸Ă&#x2014; Âź_ Y UÂ&#x161; 6 \Â&#x201C; rĂ&#x20AC; Ă&#x2030; Ă&#x2019;Ă  Ă&#x201D; \  " fÂ&#x201D; ¸Ă&#x2014; Âź t _ a AĂ&#x; Âź_ Ă&#x192; Âş\ Ϋ  Â&#x2DC;Ă´ Ăş Ă&#x2021;  . Ă  Ă&#x201D;o _ Z }s  Â? HĂŠ  Â&#x2013;Ăş Ă&#x; Â&#x2DC; ´Â&#x201D; ¸Ă&#x2014; ÂźĂ&#x2014; ĂŚ\   Y UÂ&#x161; 6 \s   Â&#x153; Š HÂ&#x201D;  ¸Ă&#x2014; Âź_ Y UÂ&#x161; 6 \` Ϋ  Â&#x2DC;Ă´ Ăş Ă&#x2021;  . â&#x20AC;˘ Ă  Ă&#x201D;o _ Â&#x2030; ÂłF & Z }s   Ă  Ă&#x201D;o _ Â&#x2030; ÂłF & Â&#x201D; ¸Ă&#x2014; Âź\ ÂŚs  6 x   # Â&#x152;¢ aÂ&#x201E; s   Â&#x201D; Ă  Ă&#x201D;o \ ÂŚĂŤ  Â&#x2013;[ Ă&#x; t% Ăž ` 3 ÂŚM  :_ Z }s  Ăź <´ §Â&#x201C; Ăş r Ă&#x2030; s  e  Â&#x201D; Ă&#x153; ÂźÂ&#x20AC;   Ă&#x2019; Â&#x17D; o½ Â? Ă&#x2030;M + :´ òĂ&#x2013; ÂŚs  b # Â? QÂ&#x201D;   . â&#x20AC;&#x201C; public int height() Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x201D; Ă&#x152; Ă o _ Z }s  \ ÂŚ>  Ă­ Â&#x2013; Ă&#x; # Â&#x152;ĂŹ Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;˘  Ă  Ă&#x201D;o _ Z }s  Â? HĂ&#x20AC;  Ă&#x2019;Ă  Ă&#x201D;Â&#x201D; ¸Ă&#x2014; Âź_ ¢ aA , ¤" ĂĄ fĂ&#x161; Ă&#x201D;Ă  Ă&#x201D;o _ Z }s  Ăź <Â&#x161; ¸Ă&#x2030; r Â?A ¤" ĂĄ fĂ&#x161; Ă&#x201D;��  Ă&#x201D;o _ Z }s  Ă&#x2014; ĂŚ  HA  ¤_ ĂĄ Z }s  +1s Â? a ) . â&#x20AC;˘ ¢ a$

Ă­ Â&#x20AC;  TestBST.java\  ÂŚs  6 x   # Â&#x152;½ ¨Â&#x2030; Âł_ & &

S Ăą Â&#x2030;$ X

` Ă­ ÂŚS  Â&#x2030;Â&#x201C; X    . s M : â&#x20AC;&#x2DC;Hâ&#x20AC;&#x2122; "

§ Î

` ĂŽ ÂŚ  6 xĂ´   Ă&#x2021;  .

7

PostLab a$

Â? Ă­ a BinarySearchTree.java\ ) ÂŚs  6 x   Â? Hç  Â&#x2013;ĂŠ Ă&#x; Â&#x2013;Ă´ Ă&#x; Ă&#x2021;6  x6 ÂŁ x   ÂŚ `½ ¨Â&#x2030; Âł &  . â&#x20AC;˘ ¢ â&#x20AC;˘ t F K t Â? HĂŠ  Â&#x2013;Ă­ Ă&#x; H  > &

Ă&#x192; Ăą º° â&#x20AC;Ť×&#x203A;â&#x20AC;ŹÂ˘ Ăş ¸Â? HĂŤ  H  ° â&#x20AC;Ť`×&#x203A;â&#x20AC;Ź Ăş ÂŚÂ&#x201D;  ¸Ă&#x2014; Âź_ ° â&#x20AC;Ť×&#x203A;â&#x20AC;ŹĂ&#x153; Ăş ÂźÂ&#x2013; Ă? 6 x   %  i . z  ´] j6 x6 ÂŁ x\    " fÂ? Hs  Â&#x2DC; Ă? Â? H4  ¤¸ Â&#x; Â&#x161; Ăş Ă&#x2021;X  Ă´ <s ' \ ÂŚ  6 x   > Â? a ) .   r  postlab\  " fÂ? H  6 §þ ÂŁ °  Â&#x201C; Ăş rY Ă&#x2030; UÂ? ĂŻĂ&#x2014; Âź\ ÂŚ& 

_ Ăą  # Â&#x152;s Y UÂ? ĂŻĂ&#x2014; Âź\ ÂŚs  Â&#x201D;   Ă&#x2019; Â&#x17D; o Â? Ă  Ă&#x201D;o \  œ Â&#x161;{ Ăş 9  Â&#x201C; ÂŚ Â&#x2022;] Â&#x152; jK Â&#x2018; r : . s M : A 9 tA Ăž Ă&#x203A; Âź\ ÂŚ  6 x   t ´ Â&#x2DC;Â&#x201C; Ăş ÂŚ, Ă&#x203A; ÂźĂ&#x203A; ÂźÂ&#x2013; Ă?1 qÂ&#x201A; l Ă&#x201C;& ½  h Â&#x201C; 9 tA Ăž Ă&#x203A; Âź\ ÂŚĂŤ  Â&#x2013;[ Ă&#x; t# Ăž Q 6 x   K Â&#x2018; 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 Ăž Ă&#x203A; Âź\ ÂŚÂś  Â&#x2DC;( Ăş RÂ&#x2DC; Ă?Â&#x20AC; q  Â&#x201C; §½ Ă&#x2030;M + : name\ ÂŚs  6 xĂ´   Ă&#x2021;  .   " fs 

Ă&#x201E; â ÂşY UÂ? ĂŻĂ&#x2014; Âź_ v ° â&#x20AC;Ť×&#x203A;â&#x20AC;Źs Ăş  names Â? a ) Â&#x201C; Œ½ Ă&#x2030;Ă&#x192; + Âş e  Â&#x201D; . v ° â&#x20AC;Ť×&#x203A;â&#x20AC;Źs Ăş ĂŞ Ă? ø Ă&#x2019; Â&#x17D; o½ Â? Ă&#x2030;M + :l ĂŻ rs  á &Â? H°  â&#x20AC;Ť`×&#x203A;â&#x20AC;Ź Ăş Ϋ  Â&#x2DC; Ăş 9, ĂŤ Â&#x2013;Â? Ă&#x; Â&#x2022; Â&#x20AC;v ° â&#x20AC;Ť`×&#x203A;â&#x20AC;Ź Ăş ÂŚh  >" Ă&#x2039;

Ă&#x153; ĂŽ ÂźÂ&#x2013; Ă? Ă&#x2039; ¨Â&#x201C; ÂŚz  ¡Ă&#x153; ÂźÂ&#x20AC;  compareTo B  j Â&#x2122; èĂ&#x2014; Âź\ ÂŚĂ&#x192;  Âş&

Ăą # Â&#x152;~ > 1  Ă&#x153; JĂ&#x192; ĂŁ Âşe  Â&#x201D; . â&#x20AC;˘ y Â&#x2022; Â&#x152; 1 qÂ&#x201A; l Ă&#x201C;& ½  h Â&#x201C; 9 tA Ăž Ă&#x203A; Âź\ ÂŚĂŤ  Â&#x2013;[ Ă&#x; tÂ&#x201C; Ăž ÂŚ NBAPlayerTest.javaĂź <Ă&#x201E; Âť Ă´ Ă&#x2021;9  tA Ăž Ă&#x203A; Âź\ ÂŚĂŤ  Â&#x2013;[ Ă&#x; t# Ăž QĂŤ Â&#x2013;Â&#x17D; Ă&#x; H9  tA Ăž Ă&#x203A; Âź_ Â&#x201C; Ă&#x203A;  ÂźÂ&#x2021; Ă&#x203A;  Âź[ t Ăž ÂŚÂś  ` Â&#x161;{ Ăş 9  Â&#x201C; ÂŚ Â&#x2022;] Â&#x152; j Â? H  ` â&#x20AC;Ť×&#x203A;â&#x20AC;Ź ÂŚ   Â&#x17D; Ă´ Ă&#x2021;  .

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

Â&#x201E;  Ă&#x201E;Â&#x2122; Â&#x2013;Â&#x2030; ÂŹĂ&#x2039; ĂŹĂ?  ĂŚÂ&#x203A; P  ò Laboratory 10. Graph ADT

1

Â? Ă&#x2014;X Ă&#x2019; Ă&#x201E; ĂŹ â&#x20AC;˘  Â&#x201C; ] o X Ă&#x203A; Ÿà Ă&#x201D;~ Ă&#x201C;Z ½ ` O ÂŚs  6 xĂ´   Ă&#x2021;Ă  Âş~ Ă&#x201C;Â&#x2020; ½ Ă&#x201C;q ž Ă&#x2014; ĂŚu  Ă&#x2022; ÂŞA ĂĄ Ă&#x201D; ADT\ Œ½  ¨Â&#x2030; ÂłK & Â&#x2018; r : . â&#x20AC;˘  Â&#x201C; ] Â? X ' Â&#x;§ =~ > Ă&#x201C;Z ½ ` O ÂŚ  s6 xĂ´   Ă&#x2021;Ă&#x201E;  Âť~ Ă&#x201C;Â&#x2020; ½ Ă&#x201C; Ă&#x2014; ž ĂŚu  Ă&#x2022; ÂŞA ĂĄ Ă&#x201D; ADT\ ά  ½Â&#x2030; ÂłK & Â&#x2018; r : .

2

4 ~ Âż â&#x20AC;˘ Ă&#x2022; ÂŞA ĂĄ Ă&#x201D;Â? H/  N| B ½ 9 Ă&#x2039;s +  Â? & 

& Ăą (vertex)[ h t_ Ăž Ă&#x201E; ô Ă&#x2021;|  9 ½ Ă&#x2039;Ăľ + s &

& Ăą [ h t` Ăž ÂŚÂ&#x192;      Â? Hç  Â&#x2013;Â&#x201A; Ă&#x; (edge)Ă&#x153;  ÂźÂ&#x2013; Ă?½ ¨$

á Ă­ &Â? H   ÂŤ Ă&#x2018;½ ¨Â&#x203A; ¸s  . â&#x20AC;˘ Ă Âş~ Ă&#x201C;Â&#x2020; ½ Ă&#x201C;Ă&#x2022; ž ÂŞA ĂĄ Ă&#x201D;(undirected graph)Â&#x201C; rç Ă&#x2030; Â&#x2013;Â&#x201A; Ă&#x; _  ~ Ă&#x201C;Â&#x2020; ½ Ă&#x201C;$ ž

s Ă­ \ Â? O HĂ&#x2022;  ÂŞA ĂĄ Ă&#x201D;\ Ϋ  Â&#x2DC;Ă´ Ăş Ă&#x2021;  . â&#x20AC;˘  Â&#x201C; ] & X

& Ăą (adjacent vertex)s h ĂŞ Ă?ç ø Â&#x2013;Â&#x201A; Ă&#x; \   _ K Â&#x192;   á  &# Qe Â? Â&#x201D; H& 

& Ăą ` h Ϋ  Â&#x2DC;Ă´ Ăş Ă&#x2021;  . â&#x20AC;˘ Ă&#x2022; ÂŞA ĂĄ Ă&#x201D;Â? HÂ&#x2DC;  Ă?: x Â&#x; Â&#x201C;]  Â&#x; X '§ Â? =¸ > ¢Â? HÂ&#x201C;  ]  o X Ă&#x203A; Ÿà Ă&#x201D;Â&#x2013; Ă?Âł Ă°Â&#x2030; ³ô & Ă&#x2021;  . â&#x20AC;˘ Â&#x201C;  ] Â? X ' Â&#x;§ =Â&#x201C; > r' Ă&#x2030; Â?§ Â&#x; =` > ÂŚs  6 x   # Â&#x152;&

& Ăą [ h tç Ăž Â&#x2013;_ Ă&#x; ç Â&#x2013;Â&#x201A; Ă&#x; `  ÂŚÂł  Ă°Â&#x2030; Âł & Â? H~  Ă&#x201C;Z ½ Ă&#x153; O ÂźÂ&#x2013; Ă?Ă Âş~ Ă&#x201C;Â&#x2020; ½ Ă&#x201C;Ă&#x2022; ž ÂŞA ĂĄ Ă&#x201D;_ 

Ă&#x201E; â Âş\  Â? H ns  &

& Ăą  h [ t_ ��ž Ă&#x192; Âş{ 9 M : n2 /2 Ă&#x; Âźl _ ' Â?§ Â&#x; =s > Â&#x20AC; â&#x20AC;Ť×&#x203A;â&#x20AC;Ź 9 š  . â&#x20AC;˘  Â&#x201C; ] o X Ă&#x203A; Ÿà Ă&#x201D;Â? Hy  Â&#x2022;& Â&#x152;

& Ăą [ h t Ăž  Ă&#x2022; ÂŞ _ â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Â&#x201C; ]  & X

& Ăą [ h t` Ăž ÂŚo  Ă&#x203A; Ÿà Ă&#x201D;Â&#x2013; Ă?Ă&#x201E; Âťt  Â? H~  Ă&#x201C;Z ½ ` O Ϋ  Â&#x2DC;Ă´ Ăş Ă&#x2021;  . â&#x20AC;˘ Â&#x2DC; Ă?  [ jĂ´ Ă&#x2021;?  /6 xÂ&#x201C;   rs Ă&#x2030; Â? rÂ&#x201D; : ¸à Ă&#x201D;\ ÂŚÂ&#x201A;  Ă?Â&#x203A; Ă&#x192; ¸.

3

UndirectedUnweightedListGraph ADT â&#x20AC;˘ ½ ¨$

â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Ă­ šÂ&#x2122; è: &

& Ăą Ăž h t [Ăľ  s[ tç Ăž Â&#x2013;\ Ă&#x;  ç Â&#x2013;Â&#x201A; Ă&#x; Ă&#x153;  ÂźÂ&#x2013; Ă?½ ¨$

Â? Ă­ a ) . y Â&#x2022;& Â&#x152;

h Ăą  &Â&#x201C; rĂ&#x2022; Ă&#x2030; ÂŞ _ â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Y Us ^ ÂŚs  e  Â&#x201D; . â&#x20AC;˘ ½ ¨Â&#x203A; ¸: y Â&#x2022;& Â&#x152;

& Ăą [ h t Ăž  Â&#x201C; ]  & X

& Ăą [ h t` Ăž ÂŚÂ&#x192;    ½  ¨Â&#x203A; ¸&

§ Ăą =o > Ă&#x203A; Ÿà Ă&#x201D;Â&#x2013; Ă?Ă&#x201E; Âťt  9, y Â&#x2022;& Â&#x152;

& Ăą [ h tÂ&#x201C; Ăž rC Ă&#x2030; \ Â&#x2013; P Ă?Ă&#x201E; Âťt Ă´ Ă&#x2021;  . protected class Vertex{ public String label; public SortedLinkedList edges; } protected Vertex[] graph; â&#x20AC;˘ Â&#x192; Ă­  Â&#x2013; Ă&#x; â&#x20AC;&#x201C; l Â&#x2018; rĂ&#x2019; : t$ q

 Ă­ : public UndirectedUnweightedListGraph() â&#x20AC;˘  Âł Ă&#x2013;Â&#x201A; Ă?Z : Ăž Ă&#x152; j@ / DEF_CAPACITYĂŤ Â&#x2013; Ă&#x; u& p

& Ăą [ h t` Ăž ÂŚ   è qĂ&#x192; ­ Âşe Â? Â&#x201D; H  Â&#x2018; Ă Âş~ Ă&#x201C;Â&#x2020; ½ Ă&#x201C;Ă&#x2022; ž ÂŞA ĂĄ Ă&#x201D;\ ÂŚĂ&#x2019;  t$ q

Ă´ Ă­ Ă&#x2021;  . Â&#x2018;   ÂŞA Ă&#x2022; ĂĄ Ă&#x201D;_ ¨ ½ ¤Â&#x201C; ÂĄ r setup() B Ă&#x2030; jÂ&#x2122; èĂ&#x2014; Âź\ ÂŚs  6 xĂ´   Ă&#x2021;  . â&#x20AC;&#x201C; public UndirectedUnweightedListGraph(int capacity) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : Ă&#x152; capacity> 0, ĂŤ Â&#x2013;Â&#x20AC; Ă&#x; Â&#x2022; capacity 0 ¢ Â? ¸Â? H6  §Ă&#x192; ÂŁ Âşs Â&#x20AC;   Ă&#x160; ĂŞÂ&#x203A; ¸| Â&#x201C; rl Ă&#x2030; Â&#x2018; rĂ&#x2019; : t$ q

 Ă­ Ăź <°   Ăş . â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : capacity>0s Ă&#x152; Â&#x20AC; Ăž  j@ / capacityĂŤ Â&#x2013; Ă&#x; u_ p &

& Ăą [ h t` Ăž ÂŚ   è qĂ&#x192; ­ Âşe Â? Â&#x201D; H  Â&#x2018; Ă Âş~ Ă&#x201C;Â&#x2020; ½ Ă&#x201C;Ă&#x2022; ž ÂŞA ĂĄ Ă&#x201D; ÂŚĂ&#x2019;  \ t$ q

Ă­ Â&#x201C; ÂŚ, ÂŞ Ă&#x2022;X t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC; Ăž  j@ / DEF_CAPACITYĂŤ Â&#x2013; Ă&#x; u& p

& Ăą [ h t` Ăž ÂŚ   è qĂ&#x192; ­ Âşe Â? Â&#x201D; HÂ&#x2018;  Ă  Âş~ Ă&#x201C;Â&#x2020; ½ Ă&#x201C;Ă&#x2022; ž ÂŞA  Ă&#x201D;\ ĂĄ ÂŚĂ&#x2019;  t$ q

Ă´ Ă­ Ă&#x2021;  . Â&#x2018; Ă&#x2022;  ÂŞA ĂĄ Ă&#x201D;_ ½ ¨ ¤Â&#x201C; ÂĄ r setup() j Ă&#x2030; BÂ&#x2122; èĂ&#x2014; Âź\ ÂŚs  6 xĂ´   Ă&#x2021;  . â&#x20AC;&#x201C; Ă&#x2019; t$ q

 Ă­ Â&#x2022; ¸š §s ÂĄ : void setup(int capacity) â&#x20AC;&#x201C; private void insertVertex(String label) 1


â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : label!=null, isFull()==false Ă&#x152; â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2022; Ă&#x152; ÂŞA ĂĄ Ă&#x201D;\  Ă&#x2026; Ă&#x2019;# Q Â&#x201D; s 2 §_ ÂŁ &

& Ăą ` h ÂŚĂ&#x2020;  Ă&#x2019;Ă´ Ă&#x2021;  . â&#x20AC;˘ \ VĂź @: NullPointerException, GraphOverflowException â&#x20AC;&#x201C; public void insertEdge(String from, String to) â&#x20AC;˘  b Ă? 9 Â&#x201A;Z : 1) from!=null, 2) to!=null, 3) isEmpty()==false, 4) s Ă&#x152; 2 §s ÂŁ  fromÂ&#x201C;  &

& Ăą Ăľ h s 2 §s ÂŁ  toÂ&#x201C; & 

& Ăą s h e # Â&#x201D; Q Â&#x2020; Ă&#x160; < â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2022; Ă&#x152; ÂŞA ĂĄ Ă&#x201D;\  " fs 2 §s ÂŁ  fromÂ&#x201C; Ăą 

&& Ăľ h s 2 §s ÂŁ  toÂ&#x201C;  Ăą

&& ` h ÂŚe  Âą Â? Hç  Â&#x2013;Â&#x201A; Ă&#x; `  ÂŚĂ&#x2020;  Ă&#x2019;Ă´ Ă&#x2021;  . Ă Âş~ Ă&#x201C;Â&#x2020; ½ Ă&#x201C; ž ÂŞA Ă&#x2022; ĂĄ Ă&#x201D;s Ă&#x2122; ÂźÂ&#x2013; Ă? s2 §s ÂŁ  toÂ&#x201C; & 

& Ăą Ăľ h s 2 §s ÂŁ  fromÂ&#x201C;  &

& Ăą ` h ÂŚe  Âą Â? Hç  Â&#x2013;Â&#x201A; Ă&#x; Â&#x2022;  ¸Â&#x2020; Ă&#x160;a < Â?Ă&#x2020; Ă&#x2019;K  Ă´ Ă&#x2021;  . â&#x20AC;˘ \ VĂź @: NullPointerException, GraphUnderflowException â&#x20AC;&#x201C; public void removeVertex(String label) â&#x20AC;˘  b Ă? 9 Â&#x201A;Z : 1) label!=null, 2) isEmpty()==false, 3) Ă&#x2026; Ă&#x152; Ă&#x2019;# QÂ&#x201D; s  2 §_ ÂŁ &

& Ăą s h Â&#x201D; rF > K  Â&#x2020; Ă&#x160; < â&#x20AC;˘  Ă&#x2013; ÂłĂ? Â&#x201A;Z : ÂŞ Ă&#x152; Ă&#x2022;A ĂĄ Ă&#x201D;\  " fĂ&#x2026; Ă&#x2019;# QÂ&#x201D; s  2 §_ ÂŁ &

& Ăą ` h ÂŚ]  j Ă´ Ă&#x2021;  . ] j á &Â? H& 

& Ăą Ăľ h  Â&#x201C; ] Ă´ X Ă&#x2021;& 

& Ăą ` h ÂŚe  Â? Âą HÂ&#x2014;  ¸ Hç  Â&#x17D; Â&#x2013;Â&#x201A; Ă&#x; `  ÂŚj  ] K  Ă´ Ă&#x2021;  . â&#x20AC;˘ \ VĂź @: NullPointerException, GraphUnderflowException â&#x20AC;&#x201C; public void removeEdge(String from, String to) â&#x20AC;˘  b Ă? 9 Â&#x201A;Z : 1) from!=null, 2) to!=null, 3) isEmpty()==false, 4) s Ă&#x152; 2 §s ÂŁ  fromÂ&#x201C;  &

& Ăą Ăľ h s 2 §s ÂŁ  toÂ&#x201C; & 

& Ăą s h e # Â&#x201D; Q Â&#x2020; Ă&#x160;, 5) s < 2 §s ÂŁ  fromÂ&#x201C; & 

& Ăą Ăľ h s 2 §s ÂŁ  toÂ&#x201C; & 

& Ăą ` h ÂŚe  Â? Âą Hç  Â&#x2013;Â&#x201A; Ă&#x; s  Â&#x201D; rF > K  Â&#x2020; Ă&#x160; < â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : Ă&#x2022; Ă&#x152; ÂŞA ĂĄ Ă&#x201D;\  " fs 2 §s ÂŁ  fromÂ&#x201C; Ăą 

&& Ăľ h s 2 §s ÂŁ  toÂ&#x201C;  Ăą

&& ` h ÂŚe  Âą Â? Hç  Â&#x2013;Â&#x201A; Ă&#x; `  ÂŚ]  j Ă´ Ă&#x2021;  . Ă Âş~ Ă&#x201C;Â&#x2020; ½ Ă&#x201C; ž ÂŞA Ă&#x2022; ĂĄ Ă&#x201D;s Ă&#x2122; ÂźÂ&#x2013; Ă? s2 §s ÂŁ  toÂ&#x201C; & 

& Ăą Ăľ h s 2 §s ÂŁ  fromÂ&#x201C;  &

& Ăą ` h ÂŚe  Âą Â? Hç  Â&#x2013;Â&#x201A; Ă&#x; Â&#x2022;  ¸] j K  Ă´ Ă&#x2021;   â&#x20AC;˘ \ VĂź @: NullPointerException, GraphUnderflowException â&#x20AC;&#x201C; public void clear() â&#x20AC;˘  Âł Ă&#x2013;Ă? Â&#x201A;Z : ÂŞ Ă&#x152; Ă&#x2022;A ĂĄ Ă&#x201D;\  e Â? Â&#x201D; HÂ&#x2014;  ¸Â&#x17D; HÂ&#x201D;  ¸Ă&#x2014; Âź\ ÂŚ]  j Ă´ Ă&#x2021;  . â&#x20AC;&#x201C; public boolean isEmpty() â&#x20AC;˘  Âł Ă&#x2013;Ă? Â&#x201A;Z : ÂŞ Ă&#x152; Ă&#x2022;A ĂĄ Ă&#x201D; q # Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  true\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚĂ&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160;Ă´ 8 Ă&#x2021;  . â&#x20AC;&#x201C; public boolean isFull() â&#x20AC;˘  Âł Ă&#x2013;Ă? Â&#x201A;Z : Ă&#x2022; Ă&#x152; ÂŞA ĂĄ Ă&#x201D;\   8s  Â&#x153;& Š

& Ăą ` h ÂŚĂ&#x2020;  Ă&#x2019;½ Ă&#x2030;Ă&#x192; + Âş\ Ă&#x153; O ÂźÂ&#x20AC;  true\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚĂ&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă? ø Â&#x160;Ă´ 8 ¨ Ă&#x2021;  . â&#x20AC;&#x201C; public void showStructure() â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : \ Ă&#x152; 6 O § ÂŁ â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : ĂŤ Ă&#x152; Â&#x2013;Â&#x20AC; Ă&#x; Â&#x2022;Ă&#x2022; Â? ÂŞA ĂĄ Ă&#x201D; q # Qe Ă&#x153; Â&#x201D; ÂźÂ&#x20AC;  â&#x20AC;&#x153;Graph is empty.â&#x20AC;?\  ÂŚĂ&#x2DC;  Τ   4 Â&#x201C; ÂŚ, Ă&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC; y  Â&#x2022;& Â&#x152;

& Ăą [ h t Ăž  ÂŞ  Ă&#x2022; _ â&#x20AC;Ť×&#x203A;â&#x20AC;Ź  Â&#x201C;]  & X

& Ăą ` h ÂŚĂ&#x2DC;  Τ  Ă´ 4 Ă&#x2021;  . s B jÂ&#x2122; èĂ&#x2014; ÂźÂ? Hn  ! Q^ ç

` ÂŚ3  q& l Ă&#x153; h ÂźÂ&#x2013; Ă?ĂŤ Â&#x2013; Ă&#x; 6 xÂ?   a ) .

4

PreLab â&#x20AC;˘ UndirectedUnweightedListGraphÂ? H UnweightedListGraph`  ÂŚ  Â&#x153;5 Š q~ Ă&#x2026; Ă&#x17D; Ă&#x192; ½ ¨Â&#x2030; ³á & &9, UnweightedListGraphÂ&#x201C; r ListGraph  Ă&#x2030; Â&#x153;5 Š q~ Ă&#x2026; Ă&#x17D; Ă&#x192; ½ ¨Â&#x2030; ÂłÂ? & a ) .s Â? rÂ&#x201D; : ¸à Ă&#x201D;Â&#x201A; Ă?Â&#x203A; Ă&#x192; ¸. â&#x20AC;˘ y Â&#x153;_ Š < Ă&#x152;` Â&#x2026;s t \  e Â? Â&#x201D; H Graph.zip`  ÂŚ  ĂŽ r~  Ă&#x17D; Ă&#x192;  UndirectedUnweightedListGraph.java\ ΢  a$

Ă­  . â&#x20AC;˘ B jÂ&#x2122; èĂ&#x2014; ÂźĂ&#x2014; ĂŚ\   removeVertex\ ΢  a$

Ă­  . s M :s Â? rÂ&#x201D; : ¸à Ă&#x201D;\  e Â? Â&#x201D; H  % â&#x20AC;Ť×&#x203A;â&#x20AC;Ź Â&#x192;! Â&#x2014; 3 ¸Â&#x17D; H& 

& Ăą [ h t_ Ăž Â&#x201C; ]  o X Ă&#x203A; Ÿà Ă&#x201D;\ ÂŚ  Ă&#x2019; Â&#x17D; o Â? t ´ Â&#x2DC;Â&#x201C; Ăş ÂŚ, ] j ½ Ă&#x2030;& +

& Ăą _ h  Â&#x201C;]  o X Ă&#x203A; Ÿà Ă&#x201D;\ ÂŚs  6 x   # Â&#x152;ç Â&#x2013;Â&#x201A; Ă&#x; [  t` Ăž ÂŚ]  j   . â&#x20AC;˘  Â&#x192;  Ă&#x2022;  ÂŞA ĂĄ Ă&#x201D;(connected graph)ĂŞ Ă?à ø Âş~ Ă&#x201C;Â&#x2020; ½ Ă&#x201C;Ă&#x2022; ž ÂŞA ĂĄ Ă&#x201D;\  " f" fÂ&#x2013; Ă? Â? rÂ&#x2014; Ă&#x2030; ¸Â&#x17D; HÂ&#x160;  Â&#x153;_ Š &

& Ăą [ h t Ăž s \ Â 

Â&#x2013; â Ă? Â&#x201D; rF >  Â? HĂ&#x2022;  ÂŞ A ĂĄ Ă&#x201D;s  . â&#x20AC;˘ # QÂ&#x2039; Â&#x192; "   Ă&#x2022;  ÂŞA ĂĄ Ă&#x201D;\  " fQ #Â&#x2039; ç " Â&#x2013;Â&#x201A; Ă&#x; `  ÂŚ]  j  % ` i ÂŚM  :# Â&#x152;Â&#x201E; y  Â&#x192;   Ă&#x2022;  ÂŞA ĂĄ Ă&#x201D;Â&#x201C; t  ¡ Â&#x2DC;Â&#x201C; Ăş ÂŚz  ¡` ÂŚĂ&#x192;  Âşe  Â&#x201D; . # QÂ&#x2039; Ă " Âş~ Ă&#x201C;Â&#x2020; ½ Ă&#x201C; ž Ă&#x2022; ÂŞA ĂĄ Ă&#x201D;_ Â&#x2014; ¸Â&#x17D; H& 

& Ăą _ h  Ă&#x192; Âş Â&#x2039; Â&#x2022;Ă&#x192; Â&#x152; Âşs Â&#x20AC; #  Â&#x152;l " f  _ ç Â&#x2013;Â&#x201A; Ă&#x; `  ÂŚ]  j  # Â&#x152;Â&#x2022; ¸# Â&#x152;Â&#x201E; y  Â&#x192;   Ă&#x2022;  ÂŞA ĂĄ Ă&#x201D; Â? a ) . ĂŹ Ă? ø @ /Â&#x2013; Ă?  s  Â&#x153;_ Š &

& Ăą _ h  Ă&#x192; Âş f Ă&#x2039;Ă&#x192; . Âş Â&#x201C; Ă Âş~ Ă&#x201C;Â&#x2020; ½ Ă&#x201C;Ă&#x2022; ž ÂŞA ĂĄ Ă&#x201D;\  " fç Â&#x2013;Â&#x201A; Ă&#x; `  ÂŚ   ] j  Â&#x20AC;   Ăľ  Ă&#x2022; ÂŞA ĂĄ Ă&#x201D; Â&#x192;   Ă&#x2022;  ÂŞ A ĂĄ Ă&#x201D; Â&#x201C; t Â? H¡  Â&#x2DC;Ă&#x192; Ăş Âş\  O . â&#x20AC;˘ Ă&#x2022; ÂŞA ĂĄ Ă&#x201D;_ Â&#x2014; ¸Â&#x17D; H& 

& Ăą _ h  Ă&#x192; Âş Â&#x2039; Â&#x2022;Ă&#x192; Â&#x152; ÂşÂ&#x201C; t    Â&#x17D;  Â? H  6 §B ÂŁ jÂ&#x2122; èĂ&#x2014; Âź\ ΢  a$

Ă­  . â&#x20AC;˘ public boolean allEven()

2


â&#x20AC;&#x201C;  b Â&#x201A; 9 Ă?Z Ă&#x152;: Ă&#x2022; ÂŞA ĂĄ Ă&#x201D; Â&#x192;   Ă&#x2022;  ÂŞA ĂĄ Ă&#x201D;s  . â&#x20AC;&#x201C;  Âł Ă&#x2013;Â&#x201A; Ă?Z Ă&#x152; : Ă&#x2022; ÂŞA ĂĄ Ă&#x201D;_ Â&#x2014; ¸Â&#x17D; H& 

& Ăą [ h t_ Ăž  Ă&#x192; Âş Â&#x2039; Â&#x2022;Ă&#x192; Â&#x152; Âşs Â&#x20AC;  true\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Â&#x201C; ÂŚ, Ă&#x2022; ÂŞX t O ¡ §Ă&#x153; Ăş ÂźÂ&#x20AC;  false\  ÂŚĂŹ  Ă?¨ ø Â&#x160; 8 Ă&#x2021;  Ă´ . â&#x20AC;˘ ¢ a$

Ă­ Â&#x20AC;  TestGraph.java\  ÂŚs  6 x   # Â&#x152;½ ¨Â&#x2030; Âł_ & &

S Ăą Â&#x2030;$ X

` Ă­ ÂŚS  Â&#x2030; X Â&#x201C;   .

5

InLab â&#x20AC;˘  Â&#x192;  Ă&#x2022;  ÂŞA ĂĄ Ă&#x201D;\  " fÂ&#x2014; ¸Â&#x17D; H& 

& Ăą ` h ÂŚĂ´  Ă&#x2021;  m  Ă­ Â&#x201D; H  r Â? H~  Ă&#x201C;Z ½ Â&#x201C; O rĂ&#x; Ă&#x2030; Âź> U ¡s  Ă&#x201E; ÂşÂ&#x201A; ~  Ă&#x201C;Z ½ Ăľ O  -q Ă&#x201E; ÂşÂ&#x201A; ~  Ă&#x201C;Z ½ s O e  Â&#x201D; . U ¡s  Ă&#x201E; Âş ~  Â&#x201A; Ă&#x201C;Z ½ Â&#x201C; O rĂ´ Ă&#x2030; Ă&#x2021;A  ¤ ĂĄ

Â&#x2013; â Ă?\ ÂŚ    8s  Â&#x153;° Š Â&#x2DC;Ă&#x192; Ăş Âş\ ` O ÂŚM  : t Â&#x20AC; $  Â&#x201E; Ă?Ă&#x2019; Ă&#x192; o Â? Â? H~  Ă&#x201C;Z ½ s O Â&#x201C; ÂŚ,  -q Ă&#x201E; ÂşÂ&#x201A; ~  Ă&#x201C;Z ½ Â&#x201C; O rr Ă&#x2030;  Â&#x2022;& Â&#x152;

& Ăą  h \ Â " f

Â&#x2013; â Ă?_ U ´s  \ ÂŚ  lĂŻ rĂ&#x153;  ÂźÂ&#x2013; Ă?Â&#x201E; Ă?Ă&#x2019; Ă&#x192; o Â? Â? H~  Ă&#x201C;Z ½ s O  . â&#x20AC;˘ Âż Âş t ~ Ă&#x201C;Z ½ Ă&#x153; O ÂźÂ&#x2013; Ă?Ă­ H  r½ Ă&#x2030;Ă&#x192; + Âşe Â? Â&#x201D; H?  /Ă&#x201A; Ă&#x2019;ĂŹ Ă?4 ø ¤ Â&#x; 9 tA Ăž Ă&#x203A; Âź\ ΢  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); } â&#x20AC;&#x201C; public GraphIterator(int type, String start) â&#x20AC;˘  b Â&#x201A; 9 Ă?Z : typeÂ&#x201C; Ă&#x152; r Graph.DFS ¢ Ă&#x2030; ¸Â? H Graph.BFSs  # Q  9, start!=nulls # Q Ă´ Ă&#x2021;  . ¢ ¸ô Ă&#x2021;s  2 § ÂŁ  startÂ&#x201C; s  &

& Ăą  h se # Â&#x201D; Q Ă´ Ă&#x2021;  . â&#x20AC;˘  Ă&#x2013; ÂłÂ&#x201A; Ă?Z : ~ Ă&#x152; Ă&#x201C;ĂŤ ½ HĂ´  Ă&#x2021;Ă­  H"  fÂ&#x2013; Ă?&

& Ăą _ h  labels  enqueue Â? aĂ&#x2021; ) Š\ ÂŚĂŤ  Â&#x2013;Â&#x17D; Ă&#x; H  . â&#x20AC;&#x201C; private void BreadthFirstSearch(int start) â&#x20AC;&#x201C; private void DepthFirstSearch(int start) s Ă&#x2014; ĂŚĂ&#x2019;  t$ q

 Ă­ , BreadthFirstSearch, DepthFirstSearch\ Œ½  ¨Â&#x2030; ÂłK &  Ă´ Ă&#x2021;  . ¡ Â&#x2DC;Â&#x201C; Ăş ÂŚo 7 §Â&#x201C; ÂŁ rs Ă&#x2030; Â? rÂ&#x201D; : ¸à Ă&#x201D;\  ["  O

á ĂŽ &# Qe  Â&#x201D; . â&#x20AC;˘ ¢$ a

Ă­ Â&#x20AC;  TestGraph.java\  ÂŚs  6 x   # Â&#x152;½ ¨Â&#x2030; Âł_ & &

S Ăą Â&#x2030;$ X

` Ă­ ÂŚS  Â&#x2030; X Â&#x201C;   . s M : â&#x20AC;&#x2DC;Bâ&#x20AC;&#x2122; "

§ Î

# ĂŽ Q< Ăź â&#x20AC;&#x2DC;Dâ&#x20AC;&#x2122; "

§ Î

# ĂŽ Q\ ÂŚ  6 xĂ´   Ă&#x2021;   .

6

PostLab â&#x20AC;˘  Â&#x201C; ] Â? X ' Â&#x;§ =` > ÂŚs  6 x   # Â&#x152;Ă&#x201E; Âť~ Ă&#x201C;Â&#x2020; ½ Ă&#x201C; Ă&#x2014; ž ĂŚu  Ă&#x2022; ÂŞA ĂĄ Ă&#x201D; ADTÂ&#x201C;  MatrixGraph`  ΢  a$

Ă­  . â&#x20AC;&#x201C;  Â&#x201C; ] Â? X ' Â&#x;§ =` > ÂŚs  6 xĂ´   Ă&#x2021;Ă  Âş~ Ă&#x201C;Â&#x2020; ½ Ă&#x201C;Ă&#x2022; ž ÂŞA ĂĄ Ă&#x201D;Â? H  6 §þ ÂŁ °  Â&#x201C; Ăş rl Ă&#x2030; r Ă?! Q Ă&#x192;  Âş\ ÂŚs  6 xĂ´   Ă&#x2021;  . protected String[] graph; protected int[][] adjMatrix; graphÂ? H& 

& Ăą Ăž h t [_  label` ÂŚĂ&#x201E;  Âťt  Â? Ho  Ă&#x203A; Ÿà Ă&#x201D;s Â&#x201C; ÂŚ, adjMatrixÂ? Hç  Â&#x2013;Â&#x201A; Ă&#x; [  t` Ăž ÂŚĂ&#x201E;  Âťt  Â? H  Â&#x201C; ] ' X Â?§ Â&#x; =Â&#x2013; > Ă?" f, adjMatrix[i][j] ° â&#x20AC;Ť×&#x203A;â&#x20AC;Źs Ăş  -1s Â&#x20AC; s  2 §s ÂŁ  vertexList[i]Â&#x201C;  &

& Ăą Ăľ h s 2 §s ÂŁ  vertexList[j]Â&#x201C;  &

Ăą & ` h ÂŚe  Âą Â? Hç  Â&#x2013;Â&#x201A; Ă&#x; s  \  O Â? H  ` â&#x20AC;Ť×&#x203A;â&#x20AC;Ź ÂŚ   p  ¡ . â&#x20AC;˘ DirectedWeightedMatrixGraphÂ&#x201C; r WeightedMatrixGraph` Ă&#x2030; ÂŚ  Â&#x153;5 Š q~ Ă&#x2026; Ă&#x17D; Ă&#x192; ½ ¨Â&#x2030; ³á & &9, WeightedMatrixGraphÂ&#x201C; r MatrixGraph  Ă&#x2030; Â&#x153;5 Š q~ Ă&#x2026; Ă&#x17D; Ă&#x192; ½ ¨Â&#x2030; ÂłÂ? & a ) . â&#x20AC;˘ InLabĂľ  Ă° Ă?t ø Â&#x2013; Ă?Ă­ H  r\ Œ½  Ă&#x2030;M + : 6 x   Â? H?  /Ă&#x201A; Ă&#x2019;ĂŹ Ă?4 ø ¤ Â&#x; 9 t ĂžA Ă&#x203A; Âź\ ΢  a$

Ă­  .

3


java_data_example