150 likes | 384 Views
คิว. ลักษณะการทำงานของ Queue การดำเนินการของ Queue การตรวจสอบ Queue Circle Queue ความแตกต่างระหว่าง Stack กับ Queue. Queue Structure. ลักษณะการทำงานของ Queue การนำสมาชิกใหม่ใส่ไปใน Queue จะใส่ที่ปลายด้านหนึ่ง เรียกว่าส่วนท้าย หรือ Rear
E N D
คิว ลักษณะการทำงานของ Queue การดำเนินการของ Queue การตรวจสอบ Queue Circle Queue ความแตกต่างระหว่าง Stack กับ Queue
Queue Structure ลักษณะการทำงานของ Queue การนำสมาชิกใหม่ใส่ไปใน Queue จะใส่ที่ปลายด้านหนึ่ง เรียกว่าส่วนท้าย หรือ Rear การนำสมาชิกออกจาก Queue จะทำที่ปลายอีกด้านหนึ่ง เรียกว่าส่วนหน้า หรือ Front มีการจัดเก็บโดยอาศัยพื้นฐานของแถวลำดับและแบบ List
ตัวอย่างลักษณะการทำงานของ Queue F R เป็นโครงสร้างแบบเข้าก่อน-ออกก่อน FIFOFirst In – First Out
การดำเนินการของ Queue (Operation on Queue) การนำสมาชิกใหม่เข้าไปใน Queue (Add หรือInsert) ใช้คำสั่ง Enqหมายถึงให้นำ Item ซึ่งเป็นสมาชิก ใหม่เข้าไปต่อท้ายสมาชิกทุกตัวที่อยู่ในโครงสร้าง Queue การนำสมาชิกออกจาก Queue (Remove หรือ Delete) ใช้คำสั่ง Deqหมายถึงเอาสมาชิกตัวแรกหรือตัวหน้า สุดใน Queue ออกมา แล้วส่งสามารถผ่าน Item
การตรวจสอบ Queue Queue ว่าง ใช้ฟังก์ชัน Empty Q Queue ว่างค่าเป็น True Queue ไม่ว่างค่าเป็น False Queue ว่างและพยายามที่จะนำข้อมูลออกจะเกิด Underflow Queue เต็ม ใช้ฟังก์ชัน Full Q Queue เต็มค่าเป็น True Queue ไม่เต็มค่าเป็น False Queue เต็มและพยายามจะนำข้อมูลเข้าจะเกิด Overflow
การตรวจสอบ Queue การเคลียร์ Queue เมื่อเริ่มการดำเนินของ Queue จะต้องทำการเคลียร์ Queue ก่อนโดยใช้ Clear Q ตัวอย่าง F = 0 , R=0 Clear Q (Que) Enq (Que,4) F = 1 , R = 1 F R
ตัวอย่าง (ต่อ) F = 1 , R = 2 Enq (Que,5) F R Enq (Que,7) F = 1 , R = 3 F R Enq (Que,8) Overflow F = 2 , R = 3 Item = 4 Deq (Que,Item) F R
ตัวอย่าง (ต่อ) F = 3 , R = 3 Item = 5 Deq (Que,Item) F R Deq (Que,Item) F = 0 , R = 0 Item = 7 Deq (Que,Item) Underflow การเพิ่มข้อมูลเข้าต้องเข้าที่ Rear ของ Queue Rear = Rear + 1 การนำข้อมูลออกต้องทำที่ Front ตัวแรกออกไป Front = Front - 1
โปรแกรมการเพิ่ม-ลดข้อมูลใน Queue Const n=20; Type itemtype = char; Queue = Array[1..N] of itemtype; Var Q : Queue; Front, Rear :0..N;
โปรแกรมการเพิ่ม-ลดข้อมูลใน Queue (ต่อ) Procedure Enq (Var Q:Queue;X:itemtype); Begin • If Rear = n then writeln (‘Full Queue’) • Else Begin • Rear := Rear + 1 ; • Q[Rear] :=X;
โปรแกรมการเพิ่ม-ลดข้อมูลใน Queue (ต่อ) • If Front = 0 then Front := 1; • End; • End; Procedure Deq (Var Q :Queue): itemtype; Begin • If Front = 0 then writeln (‘Empty Queue’) • Else
โปรแกรมการเพิ่ม-ลดข้อมูลใน Queue (ต่อ) • Begin • Y := Q[Front]; • If Front = Rear then • Begin Front := 0, Rear :=0 • Else Front := Front + 1; End;
Circle Queue เป็นการนำข้อมูลเข้าสู่ Queue โดยนำไปวางไว้ใน ส่วนหน้า (นำส่วนหน้ามาใช้อีกกรณีที่ส่วนหน้าว่าง) เช่น นำข้อมูลส่วนท้ายของ Queue(n) ไปต่อกับส่วนหน้าที่ตำแหน่ง Q(1) ตัวอย่าง F=1 , R = 1 Enq (Que,5) R F
ตัวอย่าง(ต่อ) F=1 , R = 2 Enq (Que,3) F R Enq (Que,2) F=1 , R = 3 F R Deq (Que,Item) F=2 , R = 3 Item = 5 F R F=2 , R = 1 Enq (Que,4) R F
Stack เข้าหลังออกก่อน ทำที่ส่วนปลาย การนำสมาชิกเข้า เรียกว่า Push การนำสมาชิกออกเรียกว่า Pop Queue เข้าก่อนออกก่อน ทำด้านใดด้านหนึ่งทั้งด้านหน้าด้านหลัง F , R การนำสมาชิกเข้า เรียกว่า Enq การนำสมาชิกออก เรียกว่า Deq ความแตกต่างระหว่าง Stack กับ Queue