โครงสร้างข้อมูล Queues
Using a Queue
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(การขอดูข้อมูลในคิว)
Queue Operation Enqueue – การใส่ข้อมูลลงในแถวคอย ต้องใส่ข้อมูลด้านท้ายแถวเสมอ ต้องตรวจสอบว่า queue เต็มหรือไม่ DATA 3 DATA 2 DATA 1
Queue Operation Dequeue – นำข้อมูลออกจาก queue ต้องนำข้อมูลหัวแถวออกก่อนเสมอ ต้องตรวจสอบว่า queue ว่างหรือไม่ DATA 3 DATA 2 DATA 1
Queue Operation Front – แสดงข้อมูลที่อยู่หัวแถว DATA 1 แสดงค่าข้อมูลที่อยู่หัวแถวโดยไม่ได้ดึงข้อมูลออก ต้องตรวจสอบว่าเป็น queue ว่างหรือไม่ DATA 1 DATA 2 DATA 3 DATA 1
Queue Operation Rear – แสดงข้อมูลที่อยู่ท้ายแถว DATA3 แสดงค่าข้อมูลท้ายแถวโดยไม่ได้ดึงข้อมูลออก ต้องตรวจสอบว่าเป็น queue ว่างหรือไม่ DATA 1 DATA 2 DATA 3 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 เพิ่มข้อมูลในคิวที่มีข้อมูลอยู่แล้ว
ตัวอย่างการ Dequeue
การออกแบบคิวด้วยอาร์เรย์ Queue Array Design
ปัญหาที่อาจเกิดขึ้นขณะใช้งาน เมื่อมีการ Dequeue และ Enqueue อาจจะทำให้พื้นที่ด้านหลังของอาร์เรย์เต็ม แต่ช่องว่างด้านหน้าของอาร์เรย์ยังว่างอยู่
วิธีการแก้ไข Front rear
การใช้เทคนิคคิวแบบวงกลม Circular Queue
แบบฝึกหัด อธิบายพร้อมวาดภาพประกอบคิวเป็นโครงสร้างข้อมูลรูปแบบใด และมีความแตกต่างกับสแต็กอย่างไร อธิบายโครงสร้างข้อมูลแบบคิวที่สร้างด้วยลิงก์ลิสต์ประกอบด้วยสองส่วนสำคัญอยู่ 2 ส่วนด้วยกันคืออะไรบ้าง ยกตัวอย่างการประยุกต์ใช้คิวในงานบนคอมพิวเตอร์ อธิบายฟังก์ชันการดำเนินงานพื้นฐานของคิวมีกี่อย่างอะไรบ้าง
Stack enQ deQ
Achaporn Input Achaporn output nropahca โดยให้ นศ. นำหลักการทำงานของ Stack และ Q มาใช้ในการแก้ปัญหา