chapter 3 - stack, - queue,- infix prefix postfix

26
WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO 1 Chapter 3 - Stack, - Queue,- Infix Prefix Postfix

Upload: bradley-david

Post on 03-Jan-2016

202 views

Category:

Documents


2 download

DESCRIPTION

Chapter 3 - Stack, - Queue,- Infix Prefix Postfix. WATTANAPONG SUTTAPAK Software Engineering, School of Information Communication Technology, University of PHAYAO. จุดประสงค์ บทเรียนที่ 3. เข้าใจถึงความหมายและประโยชน์ของ stack - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

1

WATTANAPONG SUTTAPAKSOFTWARE ENGINEERING, SCHOOL OF INFORMATION

COMMUNICATION TECHNOLOGY,UNIVERSITY OF PHAYAO

Chapter 3- Stack, - Queue,- Infix Prefix Postfix

Page 2: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

2

จุ�ดประสงค์ บทเร�ยนท�� 3เข้�าใจถึ�งความหมายและประโยชน์�ข้อง stackสามารถึน์�าความร� �เร��อง stack ไปใช�แก้�ป!ญหาทางคอมพิ%วเตอร�ได้�เข้�าใจถึ�งความหมายและประโยชน์�ข้อง queueสามารถึน์�าความร� �เร��อง queueไปใช�แก้�ป!ญหาทางคอมพิ%วเตอร�ได้�เข้�าใจถึ�งหล(ก้ก้าร prefix infix postfix ได้�สามารถึเข้)ยน์โปรแก้รมเพิ��อแปลงค*าสล(บระหว*าง prefix infix

postfix ได้�

Page 3: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

3

Stack

ช��อภาษาไทยก้องซ้�อน์[4]หล(ก้ก้ารท�างาน์ข้อง stack ค�อ LIFO(last in first out)ต(วอย*างก้ารประย/ก้ต�ใช� stack

ก้ารแปลงน์%พิจน์�ค�าน์วณข้องคอมพิ%วเตอร� ก้ารค�าน์วณค*าจาก้ function recursion ข้องคอมพิ%วเตอร� ก้ารแก้�ป!ญหาทางคอมพิ%วเตอร�อ��น์ๆ เช*น์ tower of hanoi stack สร�างข้�2น์มาเพิ��อช*วยให�ก้ารแก้�ป!ญหาทางคอมพิ%วเตอร�ง*าย

ข้�2น์

Page 4: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

4

32

Stack

1

Last in First outก้ารท�างาน์ข้อง stackค�อ เข้�าก้*อน์ออก้ท)หล(งหร�อ เข้�าท)หล(งออก้ก้*อน์

Page 5: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

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

Page 6: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

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

Page 7: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

7

Queue

ช��อภาษาไทยแถึวคอย [4]หล(ก้ก้ารท�างาน์ข้อง queue ค�อ FIFO(first in first

out)ต(วอย*างก้ารท�างาน์ข้อง queue

ก้ารเก้4บสถึาน์ก้ารณ�พิ%มพิ�ข้องเคร��องพิ%มพิ� ก้ารเข้�าค%วต*างๆ เช*น์ ซ้�2ออาหาร ซ้�2อต(5วหน์(ง เข้�าค%วธน์าคาร

Page 8: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

8

Queue

123

ก้ารเข้�าออก้เป3น์ไปตามล�าด้(บก้*อน์หล(งน์(�น์ค�อ เข้�าก้*อน์ออก้ก้*อน์ เข้�าหล(งออก้หล(ง

FIFO(First in First out)

Page 9: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

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

Page 10: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

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-*

Page 11: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

11

prefix? postfix?

แล�วจะก้ล(บเคร��องหมายไปหน์�าไปหล(งท�าไม ? infix เป3น์ร�ปแบบท)�มน์/ษย�ใช�อ*าน์และค%ด้ค�าน์วณ แต*ส�าหร(บคอมพิ%วเตอร� ร�ปแบบท)�ง*ายค�อ prefix และ

postfix

Page 12: Chapter  3 -  Stack, - Queue,- Infix 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

Page 13: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

13

prefix

5*6+7 infix -> prefix by Stackว%ธ)ก้ารจะเร%�มจาก้ด้�าน์ซ้�ายไปข้วาโด้ยให�ความส�าค(ญข้องเคร��องหมายส�งส/ด้ก้*อน์

+*5 6 7

Page 14: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

14

prefix

+*567 prefix -> infix1 . เร%�มจาก้ด้�าน์ซ้�ายไปข้วา หาเคร��องหมายท)�ตามด้�วยต(วเลข้

สองต(ว น์(�น์ค�อ *562 .น์�าเคร��องหมายมาไว�ตรงก้ลางจะได้� 5*6 3 .แทน์ค*า 5*6 ด้�วย x จะได้� +x74 .น์�าเคร��องหมายมาไว�ตรงก้ลางจะได้� x+75 .แทน์ค*า x ด้�วย 5*6 จะได้� 5*6+76 .ค�าตอบค�อ 5*6+7

Page 15: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

15

prefix

+*567 prefix -> infix by Stackว%ธ)ก้ารจะเร%�มจาก้ด้�าน์ข้วาไปซ้�าย(หล(งไปหน์�า)

+ * 5 6 7

Page 16: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

16

prefix

+*567 prefix -> infix by stackว%ธ)ก้ารจะเร%�มจาก้ด้�าน์ข้วาไปซ้�าย(หล(งไปหน์�า)

+30

7

37

Page 17: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

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+

Page 18: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

18

prefix

5*6+7 infix -> postfix by Stackว%ธ)ก้ารจะเร%�มจาก้ด้�าน์ซ้�ายไปข้วาโด้ยให�ความส�าค(ญข้องเคร��องหมายส�งส/ด้ก้*อน์

+*5 6 7

Page 19: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

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

Page 20: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

20

postfix

56*7+ postfix -> infix by Stackว%ธ)ก้ารจะเร%�มจาก้ด้�าน์ซ้�ายไปข้วา(หน์�าไปหล(ง)

+*5 6 730

Page 21: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

21

postfix

56*7+ postfix -> infix by Stackว%ธ)ก้ารจะเร%�มจาก้ด้�าน์ซ้�ายไปข้วา(หน์�าไปหล(ง)

+73037

Page 22: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

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,+

Page 23: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

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 

Page 24: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

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 

Page 25: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

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 + / - 

Page 26: Chapter  3 -  Stack, - Queue,- Infix Prefix Postfix

26

Exercise 7

แก้�ป!ญหา Exercise 4 5 และ 6 โด้ยใช� Stack