58
CE 311 Data Structure and Algorithm Chakkaphong Suthaputchakun [email protected]

CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

CE 311 Data Structure and Algorithm

Chakkaphong [email protected]

Page 2: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

Assignment

• Two choices– Minimum Spanning Tree– Shortest Path

Page 3: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

ตวัอย่าง City Network

Page 4: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

Network Storage Structure

• Adjacency Matrix

Page 5: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

• Adjacency List

Page 6: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

Assignment

• Choose your own choice by today• Choose your own algorithm (no

duplications- FCFS) by 16 Sep 2016• Choose your own programming language

(GUI-based)• Can submit to both CE311 and CE312• Submit a report, source code, and .exe file

by 4 Nov 2016• Oral presentation on 18 and 25 Nov 2016

Page 7: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

Assignment

• Group of three people will be assigned based on the name list

Page 8: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

บทที ่4โครงสร้างข้อมูลสแตก

(Stack)

Page 9: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

สแตก (Stack)

• สแตกเป็นโครงสร้างขอ้มูลเชิงเส้นที่มีขอ้กาํหนดวา่การเพิ่มหรือลบ

ขอ้มูลจะตอ้งทาํที่จุดเดียวเรียกวา่ Top

• สแตกเป็นโครงสร้างขอ้มูลแบบเขา้ทีหลงัออกก่อน (Last-In

First-Out : LIFO)

Page 10: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

ตวัอย่างของสแตก

Page 11: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

Stack Operation

1. Push

2. Pop

3. Stack Top

Page 12: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

1. Pushการใส่หรือเพิ่มขอ้มูลลงในสแตกที่ตาํแหน่ง Top

Page 13: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

2. Popการนาํขอ้มูลที่ตาํแหน่ง Top ออกจากสแตกหรือการลบขอ้มูลที่ตาํแหน่ง Top

Page 14: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

3. Stack Topการขอดูขอ้มูลที่ตาํแหน่ง Top ของสแตก

Page 15: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

Stack Implementation

สแตกเป็นโครงสร้างขอ้มูลที่ผูใ้ชจ้ะตอ้งสร้างขึ้นมาเอง โดยสามารถ

สร้างจากโครงสร้างขอ้มูลดงัต่อไปนี้

1. อาร์เรย์

2. ลิงคล์ิสต์

Page 16: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

1. อาร์เรย์

Page 17: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

2. ลงิค์ลสิต์

Page 18: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก
Page 19: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

(1)(2)

ตวัอย่างการ Push

Page 20: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

(1)

(2)

ตวัอย่างการ Pop

Page 21: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

Stack Application

1. Reversing Data

2. Parsing Data

3. Postponing Data Usage

4. Backtracking Step

Page 22: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

หมายถึง การเรียงลาํดบัขอ้มูลยอ้นหลงั

เช่น

{ 1 2 3 4 }

{ 4 3 2 1 }

1. Reversing Data

Page 23: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

{ 1 2 3 4 }Push

1Stack

1.1 Reverse List

Page 24: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

{ 1 2 3 4 }

21

Push

Stack

Page 25: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

{ 1 2 3 4 }

23

1

Push

Stack

Page 26: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

{ 1 2 3 4 }

234

1

Push

Stack

Page 27: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

23

1

{ 4 }Pop

Stack

Page 28: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

21

{ 4 3 }Pop

Stack

Page 29: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

1

{ 4 3 2 }Pop

Stack

Page 30: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

{ 4 3 2 1 }Pop

Stack

= Empty =

Page 31: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

2 | 14 เศษ 0

Push

1.2 Convert Decimal to Binary

0Stack

7

Page 32: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

2 | 2 | 14

เศษ 0เศษ 1

1

Push

0Stack

73

Page 33: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

2 | 2 | 14

1

เศษ 0เศษ 1เศษ 1 1

11

2 |

Push

0Stack

73

Page 34: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

11 1

Pop

0Stack

2 | 2 | 14

1

เศษ 0เศษ 1เศษ 1

2 |73

Page 35: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

1

1 1Pop

0Stack

2 | 2 | 14

1

เศษ 0เศษ 1เศษ 1

2 |73

Page 36: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

1 1 1Pop

0Stack

2 | 2 | 14

1

เศษ 0เศษ 1เศษ 1

2 |73

Page 37: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

1 1 1 0Pop

Stack

2 | 2 | 14

1

เศษ 0เศษ 1เศษ 1

2 |73

= Empty =

Page 38: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

2. Parsing Data

• หมายถึง การแยกขอ้มูลออกเป็นส่วน ๆ ที่ไม่เกี่ยวขอ้งกนัเพื่อใช้

ประมวลผลต่อไป

• เช่น คอมไพเลอร์แยก Source Program เป็นส่วน ๆ ไดแ้ก่ คาํ

สงวน ตวัแปร คาํสัง่

Page 39: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

ถ้าเจอ (Push

Stack

ถ้าเจอ )Pop

Stack

2.1 Parse Parenthesis

เป็นการตรวจสอบวา่วงเลบ็ครบคู่หรือไม่

ทาํไดโ้ดย

Page 40: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

ตวัอย่างที ่1 ( ( A + B ) / C )

( ( A + B ) / C ) Empty

( A + B ) / C ) (

A + B ) / C ) ( (

/ C ) (

Empty Empty

** MATCHED **

Page 41: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

ตวัอย่างที ่2 ( ( A + B ) / C

( ( A + B ) / C Empty

( A + B ) / C (

A + B ) / C ( (

/ C (

Empty (

** Opening parenthesis NOT MATCHED **

Page 42: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

ตวัอย่างที ่3 ( A + B ) / C )

( A + B ) / C ) Empty

A + B ) / C ) (

/ C ) Empty

) Empty

** Closing parenthesis NOT MATCHED **

Page 43: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

3. Postponement

หมายถึง การหน่วงขอ้มูลไวช้ัว่ขณะ เพื่อรอการประมวลผลใน

ช่วงเวลาที่เหมาะสม

Page 44: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

ทาํด้วยมอื:

1. ใส่วงเลบ็เพื่อกาํหนดลาํดบัการประมวลผล

2. เปลี่ยน (A @ B) เป็น (A B @) ทีละวงเลบ็

โดยทาํจากวงเลบ็ในสุดก่อน

3. ดึงวงเลบ็ออกทั้งหมด

3.1 Infix to Postfix

Page 45: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

ตวัอย่างที ่1 A + B * C

( A + (B*C) )

( A + (BC*) )

( A (BC*)+)

A B C * +

Page 46: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

ตวัอย่างที ่2 A + B * C - D / E

( ( A + (B*C) ) - (D/E) )

( ( A + (BC*) ) - (DE/) )

( ( A (BC*) +) (DE/) -)

A B C * + D E / -

Page 47: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

จงเปลี่ยนนิพจน ์Infix ต่อไปนี้เป็น Postfix โดยทาํด้วยมอื

1. D - B + C

2. A * B + C * D

3. (A+B) * C - D * F + C

4. (A - 2 * (B + C) - D * E) * F

5. (A+B) * C + D + E * F - G

แบบฝึกหัด

Page 48: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

1. พิจารณา Token ทีละตวั

- ถา้เป็น Operand ใหส้่งไป Output

- ถา้เป็น ( ให ้Push ลง Stack

- ถา้เป็น ) ให ้Pop ไป Output จนกวา่จะเป็น (

- ถา้เป็น Operator ให ้Pop ไป Output จนกวา่ Priority (Token) จะมากกวา่ Priority(StackTop) แลว้จึง Push ลง Stack

2. เมื่อครบทุก Token แลว้ให ้Pop ไปที่ Output จนหมด

ทาํโดยใช้สแตก: Priority 2: * , /1: + , -0: (

Page 49: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

ตวัอย่างที ่1 A + B * C - D / E

A+B*C-D/E Empty Empty +B*C-D/E Empty A

B*C-D/E + A*C-D/E + A B C-D/E + * A B-D/E + * A B CD/E - A B C * +

/E - A B C * + DE - / A B C * + D

Empty - / A B C * + D EEmpty Empty A B C * + D E / -

Page 50: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

ตวัอย่างที ่2 A * B - (C + D) + E

A*B-(C+D)+E Empty Empty *B-(C+D)+E Empty AB-(C+D)+E * A-(C+D)+E * A B(C+D)+E - A B *C+D)+E - ( A B *+D)+E - ( A B * C

D)+E - ( + A B * C)+E - ( + A B * C D+E - A B * C D +

E + A B * C D + -Empty + A B * C D + - EEmpty Empty A B * C D + - E +

Page 51: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

จงเปลี่ยนนิพจน ์Infix ต่อไปนี้เป็น Postfix โดยใช้สแตก

1. D - B + C

2. A * B + C * D

3. (A+B) * C - D * F + C

4. (A - 2 * (B + C) - D * E) * F

5. (A+B) * C + D + E * F - G

แบบฝึกหัด

Page 52: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

1. พิจารณาทีละ Token

- ถา้เป็น Operand ให ้Push ลง Stack

- ถา้เป็น Operator ให้

- Pop ตวัแรกใส่ B และ Pop ตวัที่ 2 ใส่ A

- ประมวลผล A @ B

- Push ผลลพัธ์ลง Stack

2. เมื่อครบทุก Token จะไดผ้ลลพัธ์อยูใ่น Stack

3.2 Evaluate Postfix

Page 53: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

ตวัอย่าง การคาํนวณหาค่าของนิพจน์ Postfix

Page 54: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

จงหาผลลพัธ์ของนิพจน์ Postfix ต่อไปนี้

1. 2 3 * 4 - 5 +

2. 2 3 4 + * 5 -

แบบฝึกหัด

Page 55: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

4. Backtracking Step

หมายถึง การยอ้นกลบัไปยงัสถานะก่อนหนา้

Page 56: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

4.1 Finding Goal

เป็นการคน้หาเส้นทางการเดินทางเพื่อไปสู่ยงัเป้าหมาย (Goal) ที่ตอ้งการ

Page 57: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

ตวัอย่าง การเกบ็เส้นทางการเดินทางไวใ้นสแตก

Page 58: CE 311 Data Structure and Algorithm - Bangkok Universitybucroccs.bu.ac.th/courses/documents/CRCC10/Ch4.pdf · โครงสร้างข้อมูลสแตก (Stack) สแตก

Q & A