โครงสร้างข้อมูลแบบ Queue
โครงสร้างข้อมูลแบบ Queue
ลักษณะสำคัญของคิว คือ สิ่งที่เข้าไปในแถวคิว (แถวอันดับ) เป็นอันดับ
แรกจะได้รับการปฏิบัติหรือถูกกระทำก่อน และจบงานหรือหลุดกระบวนการออกจากแถวคิวเป็นอันดับแรกเช่นกัน จึงเรียกคุณลักษณะโครงสร้างข้อมูลแบบคิวว่าเป็นโครงสร้างแบบ
เข้าก่อนออกก่อน (First In First Out : FIFO , First Come First Served : FCFS)
ลักษณะของคิว
โครงสร้างข้อมูลแบบคิวเป็นโครงสร้างเชิงเส้นและไม่เชิงเส้น
มีทางเข้าและออก 2 ทาง
มีการทำงานแบบลำดับ
สามารถนำข้อมูลเข้าและนำข้อมูลออกสลับกันได้
มีลำดับการทำงานแบบเข้าก่อนออกก่อน (FIFO)
ประเภทของคิว มี 3 ประเภท
คิวธรรมดา (Queue)
คิววงกลม (Circular Queue)
คิวที่เรียงลำดับตามความสำคัญ (Priority Queue)
การดำเนินการของคิว เมื่อนำเข้าข้อมูลจะต้องจัดเรียงในลักษณะการต่อท้ายกัน
ข้อมูลที่อยู่ส่วนท้ายของการเก็บข้อมูล เรียกว่า Rear
ข้อมูลที่อยู่ส่วนหัวของการเก็บข้อมูล ซึ่งจะเรียกว่า Front
การนำข้อมูลเข้าไปในคิว เรียกว่า Insert (Enqueue)
การนำข้อมูลออกจากคิว เรียกว่า Remove (Dequeue)
คิวธรรมดา (Queue)
คิวธรรมดา (Queue)
คิวธรรมดา หมายถึง คิวที่มีการนำข้อมูลเข้าทางท้ายคิว (Rear) และนำข้อมูลออกหางคิว (Front) โดยถ้าท้ายคิวไปอยู่ที่ตำแหน่งท้ายสุดของคิวแล้ว ถึงแม้จะมีช่องว่างเหลือที่หัวคิวก็ไม่สามารถนำข้อมูลใหม่ไปเก็บได้ จนกว่าจะนำข้อมูลในคิวออกให้หมดก่อนจึงเริ่มนำข้อมูลใหม่ไปเก็บได้
การนำข้อมูลเข้า Enqueue
ก่อนนำสมาชิกเข้าคิว ต้องตรวจสอบว่าคิวเต็มหรือไม่ โดยที่ ถ้า rear = maxQ แสดงว่าคิวเต็ม (เมื่อ maxQ คือขนาดของคิว)
· การนำข้อมูลใหม่เข้ามาแถวคอย จะเพิ่มเข้ามาด้านหลัง
· และจะนำเข้ามาเรื่อย ๆ จนเต็ม หรือเรียกว่า แถวคอยเต็ม (Queue Overflow)
· ดังนั้นการนำสมาชิกเข้าคิว จึง เป็นการเพิ่มค่าพอยน์เตอร์ rear
· หากมีสมาชิกในคิวเพียงค่าเดียวพอยน์เตอร์ rear และ front จะเท่ากัน
ตัวอย่าง
ตัวอย่าง
โครงสร้างของการแทนคิวด้วยอาร์เรย์
การนำสมาชิกเข้าคิว (enqueue)
การนำข้อมูลออก Dequeue
ก่อนนำสมาชิกออกจากคิว ต้องตรวจสอบดูก่อนว่าคิวว่างเปล่าหรือไม่ โดยเงื่อนไขการตรวจสอบคือ front = rear = 0
ข้อมูลที่จะนำออกก่อนจะเป็นข้อมูลที่อยู่ ด้านหน้า
สามารถนำข้อมูลออกเรื่อย ๆ จนไม่มีข้อมูล หรือเรียกว่า แถวคอยว่าง (Queue Underflow)
ดังนั้นการนำสมาชิกออกจากคิวจึง เป็นการเพิ่มค่าพอยน์เตอร์ front
Queue : Array Implementation
ที่มา : https://www.youtube.com/watch?v=u6mctyeWgHQ&t=762s