งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

โครงสร้างข้อมูลแบบ สแตก (stack) 1. 2 วัตถุประสงค์การเรียนรู้  เพื่อให้นักศึกษาทราบถึงลักษณะโครงสร้างข้อมูล แบบ สแตก (stack)  เพื่อให้นักศึกษาส่วนประกอบของ.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "โครงสร้างข้อมูลแบบ สแตก (stack) 1. 2 วัตถุประสงค์การเรียนรู้  เพื่อให้นักศึกษาทราบถึงลักษณะโครงสร้างข้อมูล แบบ สแตก (stack)  เพื่อให้นักศึกษาส่วนประกอบของ."— ใบสำเนางานนำเสนอ:

1 โครงสร้างข้อมูลแบบ สแตก (stack) 1

2 2 วัตถุประสงค์การเรียนรู้  เพื่อให้นักศึกษาทราบถึงลักษณะโครงสร้างข้อมูล แบบ สแตก (stack)  เพื่อให้นักศึกษาส่วนประกอบของ stack  เพื่อให้นักศึกษาทราบถึงการประยุกต์ให้โครงสร้าง ข้อมูลแบบสแตก (stack)

3 ความหมายของสแตก (Stack)  วุฒิพงษ์ เขื่อนดิน (2553 : 61 ) สแตก (Stack) หมายถึง โครงสร้าง ข้อมูลที่ออกแบบมาให้มีลักษณะทั้งแบบ เป็นเชิงเส้น (Linear Structure) และแบบไม่เป็นเชิงเส้น (Non Liear Structure) เพราะเขียนโปรแกรมได้ทั้งการใช้ อาร์เรย์ (Array) และพอยเตอร์ (Pointer) การนำข้อมูลเข้าและออกจากสแตกจะมี ลำดับการทำงานแบบเข้าหลังออกก่อน (LIFO) 3

4 รูปจำลองแสดงการ ทำงานของสแตก ข้อมูล 3 ข้อมูล 2 ข้อมูล ตำแหน่ง บนสุด ของสแตก ทางเ ข้า ทางอ อก 4

5 การดำเนินการกับสแตก Push Stack คือ การนำ ข้อมูลไป เก็บไว้ ในสแตก มี 2 แบบ Pop Stack คือ การนำ ข้อมูลออก จากสแตก 5

6 ตัวอ้างอิง Top  Stack จะใช้ตัวอ้างอิง (Index) ชื่อ Top มาเป็น ดัชนี สำหรับบ่งบอกถึงจำนวน ของสมาชิกในสแตก 6

7 ตัวอย่างการ Push ข้อมูลลง Stack 7

8 ตัวอย่าง ลำดับการ Push Stack ก่อน Push Top 8

9 ตัวอย่าง ลำดับการ Push Stack 1 Push = S Top Complete S Top = Top+1; stack[Top] = data; 9

10 ตัวอย่าง ลำดับการ Push Stack 2 Push = t Top Complete t S Top = Top+1; stack[Top] = data; 10

11 ตัวอย่าง ลำดับการ Push Stack 3 Push = a Top Complete a t S 11

12 ตัวอย่าง ลำดับการ Push Stack 4 Push = c Top Complete c a t S 12

13 ตัวอย่าง ลำดับการ Push Stack 5 Push = k Top Complete k c a t S 13

14 ตัวอย่าง ลำดับการ Push Stack 6 Push = i Top Overflow k c a t S 14

15 ตัวอย่างการ Pop ข้อมูลออก จาก stack 15

16 ตัวอย่าง ลำดับการ Pop Stack k c a t S Top ก่อน Pop 16

17 1 Pop ตัวอย่าง ลำดับการ Pop Stack Top Complete k c a t S Top = Top -1; Data = Stack[Top]; 17

18 2 Pop ตัวอย่าง ลำดับการ Pop Stack Top Complete c a t S

19 3 Pop ตัวอย่าง ลำดับการ Pop Stack Top Complete a t S

20 4 Pop ตัวอย่าง ลำดับการ Pop Stack Top Complete t S

21 5 Pop ตัวอย่าง ลำดับการ Pop Stack Top Complete S

22 6 Pop ตัวอย่าง ลำดับการ Pop Stack Empty Top

23 23 ลองเขียนแผนภาพ การ Push และการ Pop ข้อมูลออกจากสแตกพร้อมทั้งระบุ ตำแหน่ง ดัชนี Top ของ stack 5 ชั้น 1.Push (A) 2.Push (B ) 3.Pop (B) 4.Push (F) 5.Push (R) 6.Pop (R) 7.Pop (F) 8.Push (D) 9.Push (V) 10.Pop (V)

24 24 แบบฝึกหัด จงวาดภาพจำลองการ เปลี่ยนแปลงการทำงานใน Stack ขนาด 5 พร้อมบอกตำแหน่งของ Top ในแต่ละขั้นตอน ให้ครบ 1.Push (10) 2.Push (11 ) 3.Pop (11) 4.Push (12) 5.Push (14) 6.Pop (14) 7.Pop (12) 8.Push (20) 9.Push (16) 10.Pop (16)

25 25 1. การแปลงนิพจน์ Infix เป็น Postfix 2. การหาผลลัพธ์จากนิพจน์ Postfix การประยุกต์ใช้ stack มี 2 แบบ

26 26 1 การแปลงนิพจน์ Infix เป็น Postfix  เป็นกระบวนการที่มีความสำคัญต่อการ ออกแบบโปรแกรม  นิพจน์ที่เขียนเข้าไปปกติ จะเรียกว่า นิพจน์ infix ลักษณะคือ A+B  เมื่อทำการแปลงเป็น นิพจน์แบบ Postfix จะได้ AB+

27 27 คำศัพท์ที่ควรทราบ  ในการใช้งาน stack นั้น  เครื่องหมายทางคณิตศาสตร์ เรียกว่า operator  ตัวแปร หรือ ค่าคงที่ เรียกว่า operand

28 28 การแปลงนิพจน์จาก infix เป็น Postfix  ต้องอาศัยหรือใช้กลไกของส แตกเข้ามาช่วยในการแปลง  ต้องคำนึงถึงนิยาม ความสำคัญของลำดับ ก่อนหลังของ Operator

29 29 อัลกอริทึม การแปลงนิพจน์ Infix เป็น Postfix อัลกอริทึมในการแปลงนิพจน์ Infix เป็น postfix โดย การใช้ stack - นิพจน์ Infix ที่กำหนดให้ถือว่าเป็น Input ให้อ่านค่า มาละตัวจากซ้ายไปขวา (X+Y) * Z นิพจน์ Infix

30 30 1. ถ้า Input เป็น ตัวถูกดำเนินการ (Operand) ได้แก่ ตัวแปร ค่าคงที่ (A, B,1,2,3) ให้ นำออกไปเป็น Output 2. ถ้า Input เป็นตัวดำเนินการ (Operator) (-,+,^,*,/) แบ่งเป็นกรณีต่างๆดังนี้ 2.1 ถ้า Stack ว่าง ให้ Push ตัวดำเนินการ ลงใน Stack 2.2 ถ้า Stack ไม่ว่าง ให้เปรียบเทียบตัว ดำเนินการ (Operator) ที่เป็น Input กับตัว ดำเนินการที่เป็นตำแหน่ง Top ถ้าตัวดำเนินการที่เป็น Input มี ลำดับความสำคัญมากกว่า ให้ push ลงใน stack ถ้าตัวดำเนินการที่เป็น Input มี ลำดับความสำคัญน้อยกว่าหรือ เท่ากัน ให้ pop ตัวดำเนินการที่ตำแหน่ง Top ออกไปเป็น Output แล้วนำ ตัวดำเนินการที่ Input ตัวเดิม ทำการเปรียบเทียบกับ ตัวดำเนินการใน ตำแหน่ง Top ต่อไปเรื่อยๆ ** ให้ถือว่าเครื่องหมายวงเล็บเปิด ( ใน stack มี ลำดับความสำคัญน้อยกว่าตัวดำเนินการอื่นๆ

31 3. ถ้า Input เป็นเครื่องหมายวงเล็บ เปิด ( ให้ push ลงใน stack 4. ถ้า Input เป็นเครื่องหมาย วงเล็บปิด ) ให้ pop ตัว ดำเนินการออกจาก stack ออกไป เป็น Output ทีละตัวจนกระทั่งเจอ เครื่องหมายวงเล็บ ( จากนั้น เมื่อเจอ ให้ทิ้งเครื่องหมายวงเล็บทั้งคู่ไป 5. ถ้า Input หมดแล้ว ให้ pop ตัว ดำเนินการออกจาก stack ออกไป เป็น Output ทีละตัวจน Stack ว่าง 31

32 32 ตัวอย่าง  นิพจน์ (X+Y) * Z Input นิพจน์ Infix Stack ตัวดำเนินการ (Operator) Output นิพจน์ PostFix (( X(X +( +X Y X Y )XY + ** Z*XY +Z XY +Z*

33 33 นิพจน์ A*(B+C)/D จงแปลงนิพจน์ต่อไปนี้ จาก infix เป็น postfix

34 34 นิพจน์ A*(B+C)/D Input นิพจน์ Infix Stack ตัวดำเนินการ (Operator) Output นิพจน์ PostFix AA **A (* (A B AB +* (+AB C* (+ABC )*ABC+ //ABC+* D/ABC+*D ABC+*D/

35 35 แบบฝึกหัด  จงแปลงนิพจน์ Infix ต่อไปนี้เป็น นิพจน์ Postfix 1. A-B*C 2.A*(B+C) 3.A+B 4.A+B*(C^D*E/F)-G 5.A+(B*C-(D/F-E)*G)*H

36 36 2. การหาผลลัพธ์ค่านิพจน์ postfix มีอัลกอริทึม ดังต่อไปนี้  วิธีการคำนวณหาผลลัพธ์นิพจน์ Postfix เริ่ม จากการมองค่าโดยเรียงจากซ้ายไปขวา 1. กรณีเป็นตัวถูกดำเนินการ (Operand) ให้ push ไว้ใน stack ( หากมีหลายค่าก็ให้ เก็บค่านั้นไปเรื่อยๆ ) 2. หากพบตัวดำเนินการ (Operator) ให้ pop ตัวถูก ดำเนินการ (Operand) ที่เก็บ ค่าไว้ล่าสุด 2 ค่า มา คำนวณหาคำตอบแล้วนำค่า คำตอบนั้นเก็บกลับเข้าไปไว้ ใน stack

37 37  เมื่อพิจารณาขั้นตอนดังกล่าว พบว่า มีลักษณะของการใช้ โครงสร้างแบบ LIFO ( เข้า หลัง - ออกก่อน ) ซึ่งเป็น ลักษณะโครงสร้างข้อมูล แบบสแตก  ดังนั้น ด้วยเหตุนี้ คอมพิวเตอร์ จึงนำโครงสร้างข้อมูล แบบสแตก มาช่วยในการ คำนวณหาผลลัพธ์จากนิพจน์ Postfix

38 38 ตัวอย่าง  นิพจน์ Infix (4+6)*(9-(5- 2)) ต้องแปลงค่าเป็น นิพจน์ Postfix ก่อน

39 39 Input นิพจน์ Infix Stack ตัวดำเนินการ (Operator) Output นิพจน์ PostFix (( 4(4 +( )4 6 + ** (*( *( *(

40 40 (*(-(46+9 5*(-( *(-( *(-( )*( )*( * * Input นิพจน์ Infix Stack ตัวดำเนินการ (Operator) Output นิพจน์ PostFix

41 41 จากโจทย์เมื่อแปลงค่า นิพจน์ Infix เป็น Postfix Infix คือ (4+6)*(9-(5- 2)) Postfix คือ *

42 42 ค่า ของ postfix stack คำอธิบาย 44 Push 4 เข้า stack 646 Push 6 เข้า stack +10 Pop 4 และ 6 หาค่า ผลลัพธ์ 4+6 = 10 Push ผลลัพธ์เข้า stack Push 9 เข้า stack Push 5 เข้า stack คำนวณหาค่า จากนิพจน์ Postfix ที่ได้ ดังนี้

43 Push 2 เข้า stack Pop 5 และ 2 หาผลลัพธ์ 5-2 = 3 Push ผลลัพธ์เข้า stack Pop 9 และ 3 หาผลลัพธ์ 9-3=6 Push ผลลัพธ์เข้า stack *60 Pop 10 และ 6 หาผลลัพธ์ 10* 6=60 Push ผลลัพธ์เข้า stack ค่า ของ postfix stack คำอธิบาย

44 44 จงหาผลลัพธ์นิพจน์ postfix ต่อไปนี้ 1) * 2/ /4 + / 4 * + 2) / * 3* )1 2 3 * * + 12 / * * 4) ) * 3 /

45 45 จงแปลงนิพจน์ infix เป็น Postfix จากนั้นหาผลลัพธ์ ของ นิพจน์ Postfix 1.((2+4*2/8)*5-6)/7 2.2*3+5*2/2-16/4


ดาวน์โหลด ppt โครงสร้างข้อมูลแบบ สแตก (stack) 1. 2 วัตถุประสงค์การเรียนรู้  เพื่อให้นักศึกษาทราบถึงลักษณะโครงสร้างข้อมูล แบบ สแตก (stack)  เพื่อให้นักศึกษาส่วนประกอบของ.

งานนำเสนอที่คล้ายกัน


Ads by Google