QUEUE คิวจะมีโครงสร้างแบบเชิงเส้นเหมือน stack แต่แตกต่างตรงที่ queue มีตัวชี้ 2 ตัวคือ หัว(Head) และหาง(Tail) โดยการใส่ข้อมูลเข้าและนำข้อมูลออก จะมีลักษณะ "เข้าก่อนออกก่อน" (First In First Out: FIFO) A B C H T B C H+1 T B C D H+1 T+1 B H T
QUEUE 5 4 3 2 1 F E D C B A 6 5 4 3 2 1 E D C B A 6 5 4 3 2 F E D C B ตัวชี้หัวของโครงสร้างข้อมูล ตัวชี้ท้ายของโครงสร้างข้อมูล ใส่ข้อมูล F เข้าไปในโครงสร้างข้อมูล 6 5 4 3 2 (c) F E D C B 1 5 เอาข้อมูล A ออกจากโครงสร้างข้อมูล
QUEUE การกระทำ(Operation) ที่เกี่ยวข้องกับโครงสร้างข้อมูลแบบ Queueประกอบด้วย การสร้างคิว(Create) การนำสมาชิกข้อมูลเข้าคิว(Enqueue) การนำสมาชิกข้อมูลออกจากคิว(Dequeue) การทดสอบว่าคิวว่างหรือไม่(Empty) การทดสอบว่าคิวเต็มหรือไม่(Full) การทำให้คิวเป็นคิวว่าง(Clear)
QUEUE การสร้างคิวด้วย Array หมายถึง การแทนที่ข้อมูลของคิวด้วย array ซึ่ง เป็นการจัดสรรเนื้อที่หน่วยความจำแบบ static นั่นคือ มีการกำหนดขนาดของคิวล่วงหน้าว่ามีขนาดเท่าใด และจะมีการจัดสรรเนื้อที่หน่วยความจำให้เลย การสร้างคิวด้วย Link List หมายถึง การแทนที่ข้อมูลของคิวด้วย Link list ซึ่งเป็นการจัดสรรเนื้อที่หน่วยความจำแบบ Dynamic นั่นคือ หน่วยความจำจะถูกจัดสรรเมื่อมีการของใช้จริงๆ ระหว่างการประมวลผลโปรแกรมผ่านตัวแปรชนิด Pointer
HEAD = 1 HEAD = null TAIL = 1 TAIL = null TAIL =100 HEAD = 998 TAIL =2 ARRAYSIZE .. 4 3 2 1 TAIL =100 HEAD = 998 TAIL =2 HEAD = 1 คิวเต็ม TAIL =2,HEAD = 2
คิววงกลม แก้ปัญหาคิวเต็มไม่แท้จริง กำหนดให้ T ชี้วนกลับไปยังตำแหน่งแรกของ Array ในกรณีที่เมื่อวนกลับแล้ว T มีค่าน้อยกว่า H ARRAYSIZE .. 4 3 2 1 HEAD = 998 TAIL =1
QUEUE Algorithm INSQ(Q,N,H,T,DATA) 1. ถ้า H=1 และ T=N หรือถ้า H=T+1 แสดงว่าคิวเต็ม และจบการทำงาน 1.1 ถ้า H=null ดังนั้น ให้ H=1 และ T=1 1.2 ถ้า T=N ให้ T=1 และ 1.3 ถ้า T = ตำแหน่งใดๆ ให้ T=T+1 2. ให้ Q[T] = DATA 3. จบการทำงาน
QUEUE Algorithm DELQ(Q,N,H,T,DATA) 1. ถ้า H=null ดังนั้น คิว Under Flow และจบการทำงาน 2. ให้ DATA = Q[H] 2.1 ถ้า H=T ให้ H=T=null 2.2 ถ้า H=N ให้ H=1 2.3 ถ้า H= ตำแหน่งใดๆ ในคิวให้ H=H+1 3. จบการทำงาน
Priority QUEUES เป็นคิวประเภทหนึ่งที่มีขบวนการในการจัดลำดับและการลบออกเป็นดังนี้ 1. ข้อมูลที่มีลำดับความสำคัญสูงสุดถูกเรียกทำงานก่อน 2. ในกรณีข้อมูลมีลำดับความสำคัญเท่ากัน ข้อมูลที่มาก่อนถูกเรียกใช้งานก่อน
การประยุกต์ใช้คิว ใช้ในระบบ time-sharing วิเคราะห์จำนวนลูกค้าในคิวเพื่อกำหนดจุดให้บริการ