410 likes | 665 Views
โครงสร้างข้อมูล Queues. Using a Queue. Queues. คิวเป็นโครงสร้างข้อมูลเชิงเส้นที่สามารถเพิ่ม ข้อมูลเฉพาะตำแหน่งส่วนท้ายคิวที่เรียกว่า Rear และลบข้อมูลเฉพาะตำแหน่งส่วนหัวคิวที่เรียกว่า Front คิวเป็นโครงสร้างข้อมูลแบบ เข้าก่อนออกก่อน ( F irst I n F irst O ut : FIFO ). ตัวอย่างของคิว.
E N D
Queues • คิวเป็นโครงสร้างข้อมูลเชิงเส้นที่สามารถเพิ่มข้อมูลเฉพาะตำแหน่งส่วนท้ายคิวที่เรียกว่าRearและลบข้อมูลเฉพาะตำแหน่งส่วนหัวคิวที่เรียกว่า Front • คิวเป็นโครงสร้างข้อมูลแบบเข้าก่อนออกก่อน(First In First Out : FIFO)
ตัวอย่างการประยุกต์คิวมาใช้งานบนคอมพิวเตอร์ตัวอย่างการประยุกต์คิวมาใช้งานบนคอมพิวเตอร์ • การเข้าคิวของโปรเซสหรืองานต่างๆ เพื่อรอการประมวลผลจากซีพียูตามลำดับ • การเข้าคิวเพื่อรอพิมพ์ผลลัพธ์จากเครื่องพิมพ์
การดำเนินงานของคิว Queue Operation • โครงสร้างข้อมูลแบบคิวจะมีส่วนคล้ายกับโครงสร้างข้อมูลแบบสแต็ก แต่ความแตกต่างระหว่างโครงสร้างทั้งสองก็คือ ในการสร้างคิวเพื่อใช้งานจำเป็นต้องมีส่วนที่ใช้ติดตามทั้งส่วนหัวคิวและท้ายคิวนั่นหมายความว่าจะมีพอยน์เตอร์ถึงสองตัวโดยพอยน์เตอร์แต่ละตัวจะชี้ตรงตำแหน่งปลายทั้งสองด้านซึ่งก็คือส่วน Frontและ Rearแต่สแต็กจะมีเพียงพอยน์เตอร์เดียวที่ใช้จัดการกับข้อมูลตรงส่วน Top ของสแต็ก
ฟังก์ชันการดำเนินงานพื้นฐานของคิวฟังก์ชันการดำเนินงานพื้นฐานของคิว 1. Enqueue (ใส่หรือเพิ่ม ในตำแหน่งของ Rear) 2. Dequeue(การลบ ที่ตำแหน่ง Font) 3. Queue Front (การขอดูข้อมูลในคิว) 4. Queue Rear(การขอดูข้อมูลในคิว)
QueueOperation Enqueue – การใส่ข้อมูลลงในแถวคอย • ต้องใส่ข้อมูลด้านท้ายแถวเสมอ • ต้องตรวจสอบว่า queue เต็มหรือไม่ DATA 3 DATA 2 DATA 1
QueueOperation Dequeue – นำข้อมูลออกจาก queue • ต้องนำข้อมูลหัวแถวออกก่อนเสมอ • ต้องตรวจสอบว่า queue ว่างหรือไม่ DATA 3 DATA 2 DATA 1
DATA 3 DATA 2 DATA 1 QueueOperation Front – แสดงข้อมูลที่อยู่หัวแถว • แสดงค่าข้อมูลที่อยู่หัวแถวโดยไม่ได้ดึงข้อมูลออก • ต้องตรวจสอบว่าเป็น queue ว่างหรือไม่ DATA 1
DATA 3 DATA 2 DATA 1 QueueOperation Rear – แสดงข้อมูลที่อยู่ท้ายแถว • แสดงค่าข้อมูลท้ายแถวโดยไม่ได้ดึงข้อมูลออก • ต้องตรวจสอบว่าเป็น queue ว่างหรือไม่ DATA3
Enqueue • การใส่หรือเพิ่มข้อมูลลงในคิวที่ตำแหน่ง Rear การเพิ่มข้อมูลเข้าไปในคิวจะต้องมีพื้นที่ว่างพอที่จะใส่สมาชิกใหม่เข้าไปถ้าพื้นที่ไม่เพียงพอก็จะทำให้เกิดสถานะ Overflow
Dequeue • การนำข้อมูลที่ตำแหน่ง Front ออกจากคิวหรือการลบข้อมูลที่ตำแหน่ง Front ถ้าการลบข้อมูลในคิวถ้าคิวไม่มีสมาชิกอยู่จะทำให้เกิดสถานะ Underflow
Queue Front • การขอดูข้อมูลในคิวที่ตำแหน่ง Front
Queue Rear • การขอดูข้อมูลในคิวที่ตำแหน่ง Rear
Queue Implementation คิวเป็นโครงสร้างข้อมูลที่ผู้ใช้จะต้องสร้างขึ้นมาเอง โดยสามารถสร้างจากโครงสร้างข้อมูลดังต่อไปนี้ 1. ลิงค์ลิสต์ 2. อาร์เรย์
การออกแบบคิวด้วยลิงค์ลิสต์ Queue Linked List Design
อัลกอริทึมของคิวQueue Algorithms • Create Queue การสร้างคิว • Enqueue การเพิ่มข้อมูล • Dequeue ลบข้อมูล • Retrieving Queue Data การดึงข้อมูล • Queue Front • Queue Rear • Empty Queue ตรวจสอบคิวว่าง • Full Queue ตรวจสอบคิวเต็ม • Queue Count นับจำนวนสมาชิก • Destroy Queue ลบคิว
ตัวอย่างการ Enqueue กรณีที่ 1 เพิ่มข้อมูลในคิว ที่ยังไม่มีข้อมูลเลย กรณีที่ 2 เพิ่มข้อมูลในคิวที่มีข้อมูลอยู่แล้ว
การออกแบบคิวด้วยอาร์เรย์ Queue Array Design
ปัญหาที่อาจเกิดขึ้นขณะใช้งานปัญหาที่อาจเกิดขึ้นขณะใช้งาน • เมื่อมีการ Dequeue และ Enqueue อาจจะทำให้พื้นที่ด้านหลังของอาร์เรย์เต็ม แต่ช่องว่างด้านหน้าของอาร์เรย์ยังว่างอยู่
วิธีการแก้ไข Front rear
การใช้เทคนิคคิวแบบวงกลม Circular Queue
แบบฝึกหัด • อธิบายพร้อมวาดภาพประกอบคิวเป็นโครงสร้างข้อมูลรูปแบบใด และมีความแตกต่างกับสแต็กอย่างไร • อธิบายโครงสร้างข้อมูลแบบคิวที่สร้างด้วยลิงก์ลิสต์ประกอบด้วยสองส่วนสำคัญอยู่ 2 ส่วนด้วยกันคืออะไรบ้าง • ยกตัวอย่างการประยุกต์ใช้คิวในงานบนคอมพิวเตอร์ • อธิบายฟังก์ชันการดำเนินงานพื้นฐานของคิวมีกี่อย่างอะไรบ้าง
Stack • enQ • deQ
Achaporn • Input Achaporn • output nropahca โดยให้ นศ. นำหลักการทำงานของ Stack และ Q มาใช้ในการแก้ปัญหา