1 / 31

โครงสร้างข้อมูล Queues

โครงสร้างข้อมูล Queues. Using a Queue. Queues. คิวเป็นโครงสร้างข้อมูลเชิงเส้นที่สามารถเพิ่ม ข้อมูลเฉพาะตำแหน่งส่วนท้ายคิวที่เรียกว่า Rear และลบข้อมูลเฉพาะตำแหน่งส่วนหัวคิวที่เรียกว่า Front คิวเป็นโครงสร้างข้อมูลแบบ เข้าก่อนออกก่อน ( F irst I n F irst O ut : FIFO ). ตัวอย่างของคิว.

Download Presentation

โครงสร้างข้อมูล Queues

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. โครงสร้างข้อมูล Queues

  2. Using a Queue

  3. Queues • คิวเป็นโครงสร้างข้อมูลเชิงเส้นที่สามารถเพิ่มข้อมูลเฉพาะตำแหน่งส่วนท้ายคิวที่เรียกว่าRearและลบข้อมูลเฉพาะตำแหน่งส่วนหัวคิวที่เรียกว่า Front • คิวเป็นโครงสร้างข้อมูลแบบเข้าก่อนออกก่อน(First In First Out : FIFO)

  4. ตัวอย่างของคิว

  5. ตัวอย่างการประยุกต์คิวมาใช้งานบนคอมพิวเตอร์ตัวอย่างการประยุกต์คิวมาใช้งานบนคอมพิวเตอร์ • การเข้าคิวของโปรเซสหรืองานต่างๆ เพื่อรอการประมวลผลจากซีพียูตามลำดับ • การเข้าคิวเพื่อรอพิมพ์ผลลัพธ์จากเครื่องพิมพ์

  6. การดำเนินงานของคิว Queue Operation • โครงสร้างข้อมูลแบบคิวจะมีส่วนคล้ายกับโครงสร้างข้อมูลแบบสแต็ก แต่ความแตกต่างระหว่างโครงสร้างทั้งสองก็คือ ในการสร้างคิวเพื่อใช้งานจำเป็นต้องมีส่วนที่ใช้ติดตามทั้งส่วนหัวคิวและท้ายคิวนั่นหมายความว่าจะมีพอยน์เตอร์ถึงสองตัวโดยพอยน์เตอร์แต่ละตัวจะชี้ตรงตำแหน่งปลายทั้งสองด้านซึ่งก็คือส่วน Frontและ Rearแต่สแต็กจะมีเพียงพอยน์เตอร์เดียวที่ใช้จัดการกับข้อมูลตรงส่วน Top ของสแต็ก

  7. ฟังก์ชันการดำเนินงานพื้นฐานของคิวฟังก์ชันการดำเนินงานพื้นฐานของคิว 1. Enqueue (ใส่หรือเพิ่ม ในตำแหน่งของ Rear) 2. Dequeue(การลบ ที่ตำแหน่ง Font) 3. Queue Front (การขอดูข้อมูลในคิว) 4. Queue Rear(การขอดูข้อมูลในคิว)

  8. QueueOperation Enqueue – การใส่ข้อมูลลงในแถวคอย • ต้องใส่ข้อมูลด้านท้ายแถวเสมอ • ต้องตรวจสอบว่า queue เต็มหรือไม่ DATA 3 DATA 2 DATA 1

  9. QueueOperation Dequeue – นำข้อมูลออกจาก queue • ต้องนำข้อมูลหัวแถวออกก่อนเสมอ • ต้องตรวจสอบว่า queue ว่างหรือไม่ DATA 3 DATA 2 DATA 1

  10. DATA 3 DATA 2 DATA 1 QueueOperation Front – แสดงข้อมูลที่อยู่หัวแถว • แสดงค่าข้อมูลที่อยู่หัวแถวโดยไม่ได้ดึงข้อมูลออก • ต้องตรวจสอบว่าเป็น queue ว่างหรือไม่ DATA 1

  11. DATA 3 DATA 2 DATA 1 QueueOperation Rear – แสดงข้อมูลที่อยู่ท้ายแถว • แสดงค่าข้อมูลท้ายแถวโดยไม่ได้ดึงข้อมูลออก • ต้องตรวจสอบว่าเป็น queue ว่างหรือไม่ DATA3

  12. Enqueue • การใส่หรือเพิ่มข้อมูลลงในคิวที่ตำแหน่ง Rear การเพิ่มข้อมูลเข้าไปในคิวจะต้องมีพื้นที่ว่างพอที่จะใส่สมาชิกใหม่เข้าไปถ้าพื้นที่ไม่เพียงพอก็จะทำให้เกิดสถานะ Overflow

  13. Dequeue • การนำข้อมูลที่ตำแหน่ง Front ออกจากคิวหรือการลบข้อมูลที่ตำแหน่ง Front ถ้าการลบข้อมูลในคิวถ้าคิวไม่มีสมาชิกอยู่จะทำให้เกิดสถานะ Underflow

  14. Queue Front • การขอดูข้อมูลในคิวที่ตำแหน่ง Front

  15. Queue Rear • การขอดูข้อมูลในคิวที่ตำแหน่ง Rear

  16. Queue Implementation คิวเป็นโครงสร้างข้อมูลที่ผู้ใช้จะต้องสร้างขึ้นมาเอง โดยสามารถสร้างจากโครงสร้างข้อมูลดังต่อไปนี้ 1. ลิงค์ลิสต์ 2. อาร์เรย์

  17. การออกแบบคิวด้วยลิงค์ลิสต์ Queue Linked List Design

  18. ส่วนประกอบคิวด้วยลิงค์ลิสต์

  19. ตัวอย่างการใช้งาน

  20. อัลกอริทึมของคิวQueue Algorithms • Create Queue การสร้างคิว • Enqueue การเพิ่มข้อมูล • Dequeue ลบข้อมูล • Retrieving Queue Data การดึงข้อมูล • Queue Front • Queue Rear • Empty Queue ตรวจสอบคิวว่าง • Full Queue ตรวจสอบคิวเต็ม • Queue Count นับจำนวนสมาชิก • Destroy Queue ลบคิว

  21. ตัวอย่างการ Enqueue กรณีที่ 1 เพิ่มข้อมูลในคิว ที่ยังไม่มีข้อมูลเลย กรณีที่ 2 เพิ่มข้อมูลในคิวที่มีข้อมูลอยู่แล้ว

  22. ตัวอย่างการ Dequeue

  23. การออกแบบคิวด้วยอาร์เรย์ Queue Array Design

  24. ปัญหาที่อาจเกิดขึ้นขณะใช้งานปัญหาที่อาจเกิดขึ้นขณะใช้งาน • เมื่อมีการ Dequeue และ Enqueue อาจจะทำให้พื้นที่ด้านหลังของอาร์เรย์เต็ม แต่ช่องว่างด้านหน้าของอาร์เรย์ยังว่างอยู่

  25. วิธีการแก้ไข Front rear

  26. การใช้เทคนิคคิวแบบวงกลม Circular Queue

  27. แบบฝึกหัด • อธิบายพร้อมวาดภาพประกอบคิวเป็นโครงสร้างข้อมูลรูปแบบใด และมีความแตกต่างกับสแต็กอย่างไร • อธิบายโครงสร้างข้อมูลแบบคิวที่สร้างด้วยลิงก์ลิสต์ประกอบด้วยสองส่วนสำคัญอยู่ 2 ส่วนด้วยกันคืออะไรบ้าง • ยกตัวอย่างการประยุกต์ใช้คิวในงานบนคอมพิวเตอร์ • อธิบายฟังก์ชันการดำเนินงานพื้นฐานของคิวมีกี่อย่างอะไรบ้าง

  28. Stack • enQ • deQ

  29. Achaporn • Input Achaporn • output nropahca โดยให้ นศ. นำหลักการทำงานของ Stack และ Q มาใช้ในการแก้ปัญหา

More Related