1 / 42

Stack

Stack. Data structure & Algorithms. Stack. Stack เป็นโครงสร้างข้อมูลแบบ LIFO (Last-In, First-Out) Operations พื้นฐานของ Stack ได้แก่ - การนำข้อมูลเข้าสู่ Stack เรียกว่า Push - การนำข้อมูลออกจาก Stack เรียกว่า Pop - การเรียกใช้ข้อมูลจาก Stack เรียกว่า Top

kovit
Download Presentation

Stack

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Stack Data structure & Algorithms

  2. Stack • Stack เป็นโครงสร้างข้อมูลแบบ LIFO (Last-In, First-Out) • Operations พื้นฐานของ Stack ได้แก่ - การนำข้อมูลเข้าสู่ Stack เรียกว่า Push - การนำข้อมูลออกจาก Stack เรียกว่า Pop - การเรียกใช้ข้อมูลจาก Stack เรียกว่า Top • การสร้าง Stack - ใช้ Array แทน Stack - ใช้ Linked list แทน Stack Company Logo

  3. Stack Company Logo

  4. เพิ่มข้อมูลใน Stack: Push Company Logo

  5. นำข้อมูลออกจาก Stack : Pop Company Logo

  6. เรียกใช้ข้อมูลใน Stack: Top Company Logo

  7. Company Logo

  8. Company Logo

  9. Linked listแทนStack Company Logo

  10. Linked listแทนStack Company Logo

  11. Company Logo

  12. Company Logo

  13. Operations พื้นฐานของ Stack ที่สร้างด้วย Linked list 1. Create stack: สร้าง stack head node 2. Push stack: เพิ่มรายการใน stack 3. Pop stack: ลบรายการใน stack 4. Stack top: เรียกใช้รายการข้อมูลที่อยู่บนสุดของ stack 5. Empty stack: ตรวจสอบว่า stack ว่างเปล่าหรือไม่ 6. Full stack: ตรวจสอบว่า stack เต็มหรือไม่ 7. Stack count: ส่งค่าจำนวนรายการใน stack 8. Destroy stack: คืนหน่วยความจำของทุก node ใน stack ให้ระบบ Company Logo

  14. Stack Applications: Balancing Symbols Company Logo

  15. Stack Applications: Infix to Postfix conversion The conversion time is O(n) Company Logo

  16. Postfix expression evaluation The evaluation time is O(n) Company Logo

  17. Backtracking Backtracking คือวิธีการหาคำตอบโดยเดินหน้าไปยังเป้าหมายเมื่อถึงทางแยกก็จะต้องตัดสินใจเลือกเส้นทางใดเส้นทางหนึ่งเดินหน้าต่อไปเพื่อหาเป้าหมายหากเดินไปจนสุดเส้นทางแล้วยังไม่พบเป้าก็จะเดินย้อนกลับมายังจุดแยกครั้งสุดท้ายแล้วเลือกเส้นทางใหม่ที่ยังไม่เคยไปทำเช่นนี้ไปเรื่อยๆจนกว่าจะพบเป้าหมายหรือจนครบทุกเส้นทาง Backtracking เป็นการประยุกต์ใช้โครงสร้างข้อมูลแบบ Stack สำหรับการเขียนโปรแกรมประเภทเกมส์คอมพิวเตอร์ (computer gaming) การวิเคราะห์การตัดสินใจ(decision analysis) และระบบผู้เชี่ยวชาญ(expert system) ตัวอย่างปัญหาที่ใช้วิธี Backtracking เช่นปัญหาการค้นหาเป้าหมาย (goal seeking) และปัญหา 8 ราชินี (eight queens problem) Company Logo

  18. Stack Applications: Backtracking Company Logo

  19. Stack Applications: Backtracking Company Logo

  20. Stack Applications: Backtracking Company Logo

  21. Stack Applications: Backtracking Company Logo

  22. Queue Data structure & Algorithms

  23. Queue • Queue เป็นโครงสร้างข้อมูลแบบ FIFO (First-In, First-Out) • Operations พื้นฐานของ Queue ได้แก่ - การนำข้อมูลเข้าสู่ Queue เรียกว่า Enqueue - การนำข้อมูลออกจาก Queue เรียกว่า Dequeue - การเรียกใช้ข้อมูลจากหัวแถวของ Queue เรียกว่า Front - การเรียกใช้ข้อมูลจากท้ายแถวของ Queue เรียกว่า Rear • การสร้าง Queue - ใช้ Array แทน queue - ใช้ Linked list แทน queue Company Logo

  24. The Queue concept Company Logo

  25. Operation Enqueue Company Logo

  26. Operation Dequeue Company Logo

  27. Operation QueueFront Company Logo

  28. Figure 5-5 Operation QueueRear Company Logo

  29. Figure 5-6 Queue Operations Company Logo

  30. Queue Operations Company Logo

  31. โครงสร้างของQueue แบบArray Company Logo

  32. Is queue full? Company Logo

  33. Circular Queue Company Logo

  34. โครงสร้างของQueue แบบLinked list Company Logo

  35. Queue data structure Company Logo

  36. Algorithm พื้นฐานของ Queue 1.Create queue:สร้างqueue headจากdynamic memory 2. Enqueue: เพิ่มรายการเข้าไปในqueue 3. Dequeue: ลบรายการออกจากqueue 4. Queue front:เรียกใช้ข้อมูลที่ด้านหน้าของqueue 5. Queue rear:เรียกใช้ข้อมูลที่ด้านหน้าของqueue 6. Empty queue:ตรวจสอบว่าqueueว่างหรือไม่ 7. Full queue: ตรวจสอบว่าqueueเต็มหรือไม่ (มีหน่วยความจำ จัดให้ได้หรือไม่) 8. Queue count:บอกจำนวนรายการในqueue 9. Destroy queue: ลบข้อมูลทั้งหมดในqueueและคืนหน่วยความจำ ให้ระบบแล้วลบและคืนหน่วยความจำของhead node Company Logo

  37. Create and enqueue Company Logo

  38. Company Logo

  39. เพิ่มข้อมูลเข้า Queue Company Logo

  40. ลบข้อมูลออกจากเข้า Queue Company Logo

  41. Queue Application การเขียนฟังก์ชันชื่อ matching เพื่ออ่านอักขระจากแป้นพิมพ์ แล้วทำการตรวจสอบดูว่า อักขระที่อ่านมานั้น อักขระทุกตัวก่อนหน้าจุดและอักขระทุกตัวที่อยู่หลังจุด เหมือนกันหรือไม่ ถ้าเหมือนกันฟังก์ชันจะส่งคืนค่า 1 มิฉะนั้นจะคืนค่า 0 โดยลักษณะของอักขระที่อ่านจากแป้นพิมพ์ มีดังนี้ อักขระย่อย1.อักขระย่อย2 โดยที่อักขระย่อยก่อนหน้าจุดและอักขระย่อยหลังจุดมีขนาดความยาวเท่ากัน Company Logo

  42. int matching() { char c1, c2; QueueType queue; int match; clearQ(queue); while((c1=getchar()) != '.') enq(queue, c1); match = 1; while(!emptyQ(queue)&& match) { c1 = deq(queue); c2 = getchar(); if (c2 != c1) match = 0; } return (match); } Company Logo

More Related