chapter 3 - stack, - queue,- infix prefix postfix
DESCRIPTION
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix. WATTANAPONG SUTTAPAK Software Engineering, School of Information Communication Technology, University of PHAYAO. จุดประสงค์ บทเรียนที่ 3. เข้าใจถึงความหมายและประโยชน์ของ stack - PowerPoint PPT PresentationTRANSCRIPT
1
WATTANAPONG SUTTAPAKSOFTWARE ENGINEERING, SCHOOL OF INFORMATION
COMMUNICATION TECHNOLOGY,UNIVERSITY OF PHAYAO
Chapter 3- Stack, - Queue,- Infix Prefix Postfix
2
จุ�ดประสงค์ บทเร�ยนท�� 3เข้�าใจถึ�งความหมายและประโยชน์�ข้อง stackสามารถึน์�าความร� �เร��อง stack ไปใช�แก้�ป!ญหาทางคอมพิ%วเตอร�ได้�เข้�าใจถึ�งความหมายและประโยชน์�ข้อง queueสามารถึน์�าความร� �เร��อง queueไปใช�แก้�ป!ญหาทางคอมพิ%วเตอร�ได้�เข้�าใจถึ�งหล(ก้ก้าร prefix infix postfix ได้�สามารถึเข้)ยน์โปรแก้รมเพิ��อแปลงค*าสล(บระหว*าง prefix infix
postfix ได้�
3
Stack
ช��อภาษาไทยก้องซ้�อน์[4]หล(ก้ก้ารท�างาน์ข้อง stack ค�อ LIFO(last in first out)ต(วอย*างก้ารประย/ก้ต�ใช� stack
ก้ารแปลงน์%พิจน์�ค�าน์วณข้องคอมพิ%วเตอร� ก้ารค�าน์วณค*าจาก้ function recursion ข้องคอมพิ%วเตอร� ก้ารแก้�ป!ญหาทางคอมพิ%วเตอร�อ��น์ๆ เช*น์ tower of hanoi stack สร�างข้�2น์มาเพิ��อช*วยให�ก้ารแก้�ป!ญหาทางคอมพิ%วเตอร�ง*าย
ข้�2น์
4
32
Stack
1
Last in First outก้ารท�างาน์ข้อง stackค�อ เข้�าก้*อน์ออก้ท)หล(งหร�อ เข้�าท)หล(งออก้ก้*อน์
5
Stack
Exercise 1 สร�าง class stack ด้�วย Array หร�อ ArrayList ให�ต(2งช��อ
class ว*า MyStack โด้ยก้�าหน์ด้ให� method push() เพิ%�ม item method pop() ด้�ง item ออก้ ก้�าหน์ด้ให�ข้�อม�ลเป3น์ด้(งน์)2 push(0) push(1) push(1) push(2) push(3)
push(4) pop() push(5) push(6) pop() push(7) pop()
push(8) print ค*า array ท(2งหมด้ใน์ stack จะต�องได้� 0 1 1 2 3 5 8
6
Stack
Exercise 2 ให�ใช� class Stack
โด้ยก้�าหน์ด้ให� method push() เพิ%�ม item method pop() ด้�ง item ออก้ ก้�าหน์ด้ให�ข้�อม�ลเป3น์ด้(งน์)2 push(0) push(1) push(1) push(2) push(3)
push(4) pop() push(5) push(6) pop() push(7) pop()
push(8) print ค*า array ท(2งหมด้ใน์ stack จะต�องได้� 0 1 1 2 3 5 8
7
Queue
ช��อภาษาไทยแถึวคอย [4]หล(ก้ก้ารท�างาน์ข้อง queue ค�อ FIFO(first in first
out)ต(วอย*างก้ารท�างาน์ข้อง queue
ก้ารเก้4บสถึาน์ก้ารณ�พิ%มพิ�ข้องเคร��องพิ%มพิ� ก้ารเข้�าค%วต*างๆ เช*น์ ซ้�2ออาหาร ซ้�2อต(5วหน์(ง เข้�าค%วธน์าคาร
8
Queue
123
ก้ารเข้�าออก้เป3น์ไปตามล�าด้(บก้*อน์หล(งน์(�น์ค�อ เข้�าก้*อน์ออก้ก้*อน์ เข้�าหล(งออก้หล(ง
FIFO(First in First out)
9
Queue
Exercise 3 สร�าง class queue ด้�วย Array หร�อ ArrayList ให�ต(2งช��อ
class ว*า MyQueue โด้ยก้�าหน์ด้ให� method enqueue() เพิ%�ม item method dequeue() ด้�ง item ออก้ ก้�าหน์ด้ให�ข้�อม�ลเป3น์ด้(งน์)2 enqueue(10) enqueue(8) enqueue(1)
enqueue(2) enqueue(3) dequeue() enqueue(4) dequeue() enqueue(5) จะต�องได้� 1 2 3 4 5
10
infix prefix postfix
infix notation หมายถึ�ง ร�ปแบบก้ารเข้)ยน์ต(วเลข้และเคร��องหมายใน์ร�ปแบบปก้ต% เช*น์ (a+b)*(c-d) หร�อ (3+5)*(4-3)
prefix notation(Polish notation) หมายถึ�งร�ปแบบก้ารเข้)ยน์ต(วเลข้และเคร��องหมายใน์ร�ปแบบให�เคร��องหมายอย�*ด้�าน์หน์�าต(วเลข้เช*น์ *+ab-cd หร�อ *+35-43
postfix notation(Reverse Polish notation) หมายถึ�งร�ปแบบก้ารเข้)ยน์ต(วเลข้และเคร��องหมายใน์ร�ปแบบให�เคร��องหมายอย�*ด้�าน์หล(งต(วเลข้เช*น์ ab+cd-* หร�อ 35+43-*
11
prefix? postfix?
แล�วจะก้ล(บเคร��องหมายไปหน์�าไปหล(งท�าไม ? infix เป3น์ร�ปแบบท)�มน์/ษย�ใช�อ*าน์และค%ด้ค�าน์วณ แต*ส�าหร(บคอมพิ%วเตอร� ร�ปแบบท)�ง*ายค�อ prefix และ
postfix
12
prefix
(5*6)+7 = 5*6+7 infix -> prefix1 . เร%�มจาก้ความส�าค(ญส�งส/ด้น์(�น์ค�อ 5*6 2. น์�าเคร��องหมายมาด้�าน์หน์�าต(วเลข้จะได้�เป3น์ *563. ให� *56 = x จะได้� x + 7 4. น์�าเคร��องหมายไว�ด้�าน์หน์�าจะได้�เป3น์ +x7 5. แทน์ค*า x ด้�วย *56 จะได้� +*567 เป3น์ค�าตอบ6. ค�าตอบค�อ +*567
13
prefix
5*6+7 infix -> prefix by Stackว%ธ)ก้ารจะเร%�มจาก้ด้�าน์ซ้�ายไปข้วาโด้ยให�ความส�าค(ญข้องเคร��องหมายส�งส/ด้ก้*อน์
+*5 6 7
14
prefix
+*567 prefix -> infix1 . เร%�มจาก้ด้�าน์ซ้�ายไปข้วา หาเคร��องหมายท)�ตามด้�วยต(วเลข้
สองต(ว น์(�น์ค�อ *562 .น์�าเคร��องหมายมาไว�ตรงก้ลางจะได้� 5*6 3 .แทน์ค*า 5*6 ด้�วย x จะได้� +x74 .น์�าเคร��องหมายมาไว�ตรงก้ลางจะได้� x+75 .แทน์ค*า x ด้�วย 5*6 จะได้� 5*6+76 .ค�าตอบค�อ 5*6+7
15
prefix
+*567 prefix -> infix by Stackว%ธ)ก้ารจะเร%�มจาก้ด้�าน์ข้วาไปซ้�าย(หล(งไปหน์�า)
+ * 5 6 7
16
prefix
+*567 prefix -> infix by stackว%ธ)ก้ารจะเร%�มจาก้ด้�าน์ข้วาไปซ้�าย(หล(งไปหน์�า)
+30
7
37
17
postfix
(5*6)+7 = 5*6+7 infix -> postfix1 . เร%�มจาก้ความส�าค(ญส�งส/ด้น์(�น์ค�อ 5*6 2 .น์�าเคร��องหมายมาด้�าน์หลั�งต(วเลข้จะได้�เป3น์ 56*3 . ให� 56* = x จะได้� x + 7 4 .น์�าเคร��องหมายไว�ด้�าน์หลั�งจะได้�เป3น์ x7 +5 .แทน์ค*า x ด้�วย 56* จะได้� 56*7+ เป3น์ค�าตอบ6 .ค�าตอบค�อ 56*7+
18
prefix
5*6+7 infix -> postfix by Stackว%ธ)ก้ารจะเร%�มจาก้ด้�าน์ซ้�ายไปข้วาโด้ยให�ความส�าค(ญข้องเคร��องหมายส�งส/ด้ก้*อน์
+*5 6 7
19
postfix
56*7+postfix -> infix1 . เร%�มจาก้ด้�าน์ซ้�ายไปข้วา หาต(วเลข้สองต(วและม)เคร��องด้�าน์
หล(ง น์(�น์ค�อ 56*2 .น์�าเคร��องหมายมาไว�ตรงก้ลางจะได้� 5*63 .แทน์ค*า 5*6 ด้�วย x จะได้� x7+4 .น์�าเคร��องหมายมาไว�ตรงก้ลางจะได้� x+75 .แทน์ค*า x ด้�วย 5*6 จะได้� 5*6+76 .ค�าตอบค�อ 5*6+7
20
postfix
56*7+ postfix -> infix by Stackว%ธ)ก้ารจะเร%�มจาก้ด้�าน์ซ้�ายไปข้วา(หน์�าไปหล(ง)
+*5 6 730
21
postfix
56*7+ postfix -> infix by Stackว%ธ)ก้ารจะเร%�มจาก้ด้�าน์ซ้�ายไปข้วา(หน์�าไปหล(ง)
+73037
22
prefix postfix
จาก้ต(วอย*างท(2ง prefix และ postfix จะเห4น์ว*าเม��อต(วเลข้ท)�ม)จ�าน์วน์หล(ก้มาก้ก้ว*า 2 หล(ก้(มาก้ก้ว*าหร�อเท*าก้(บ 10) จะท�าให�ก้ารแปลงก้(บจาก้ prefix(postfix) ไปเป3น์ infix ม)ความผิ%ด้พิลาด้เช*น์ 27*6+5 แปลงเป3น์ postfix จะได้� 276*5+และ2*76+5 แปลงเป3น์ postfix จะได้� 276*5+จะเห4น์ว*า postfix ข้องท(2งสองค*าเหม�อน์ก้(น์ ด้(งน์(2น์ใน์ก้รณ) infix ม)จ�าน์วน์ใด้จ�าน์วน์หน์��งม)ค*าต(2งแต* 10 ข้�2น์ไป ให�ใส*เป3น์เคร��องหมาย , ค(�น์ใน์แต*ละเคร��องหมายและต(วเลข้เช*น์27*6+5 -> 27,6,*,5,+2*76+5 -> 2,76,*,5,+
23
Exercise 4
แปลงค*า infix ต*อไปน์)2เป3น์ prefix และ postfix1. (A + B) * C + D / (E + F * G) – H2. ! (A && ! ((B < C) || (C > D))) || (C < E)3. A - B - C * (D + E / F - G) – H
เฉลัย4. postfix: A B + C * D E F G * + / + H -
prefix: - + * + A B C / D + E * F G H 5. postfix: A B C < C D > || ! && ! C E < ||
prefix: || ! && A ! || < B C > C D < C E 6. postfix: A B - C D E F / + G - * - H -
prefix: - - - A B * C - + D / E F G H
24
Exercise 5
แปลงค*า postfix ต*อไปน์)2เป3น์ infix จาก้น์(2น์แปลงเป3น์ prefix1. A B && C || E F > ! ||2. A B C D * - E / + F + G H / -
เฉลัย3. infix: (A && B) || C || ! (E > F)
prefix: || || && A B C ! > E F 4. infix: A + ((B - C * D) / E ) + F - G / H
prefix: - + + A / - B * C D E F / G H
25
Exercise 6
Exercise 6 แปลงค*า prefix ต*อไปน์)2เป3น์ infix จาก้น์(2น์แปลงเป3น์ postfix1. - / + * A B C D / E + F G
เฉลัยinfix: (A * B + C) / D - E / (F + G) postfix: A B * C + D / E F G + / -
26
Exercise 7
แก้�ป!ญหา Exercise 4 5 และ 6 โด้ยใช� Stack