วันพุธที่ 5 สิงหาคม พ.ศ. 2552

Lecture 5 เรื่อง Queue

คิว Queue เป็นโครงสร้างข้อมูลแบบเชิงเส้น หรือ ลิเนียร์ลิสต์ การเพิมข้อมูลจะทำที่ปลายข้างหนึ่ง ที่เรียกว่าส่วนท้าย หรือ เรียร์ (Rear) และนำข้อมูลออกทางปลายอีกข้างหนึ่งเรียกว่า ส่วนหน้า หรือ ฟรอนต์ (Front) ลักษณะการทำงานของคิว จะเป็นแบบ FIFO
การทำงานของคิว ถ้าใส่สมาชิกตัวใหม่ลงในคิวเรียกว่า Enqueue
enqueue หรือ queue,newElement ซึ่งหมายถึง การใส่ข้อมูล newElement ลงในเรียร์ของคิว
การนำสมาชิกออกจากคิว เรียกว่า Dequeue รูปแบบคือ queue,element ซึ่งหมายถึง การนำออกจากส่วนหน้าของคิว และให้ข้อมูลนั้นกับ element
ถ้านำข้อมูลตอนต้นออกจากคิวมาแสดงเรียกว่า Queue Front แต่ไม่มีการเอาข้อมูลออกจากคิว
ส่วนการนำข้อมูลที่อยู่ตอนท้ายของคิวมาแสดง เรียกว่า Queue Rearv แต่ไม่ทำการเพิ่มข้อมูลเข้าไปในคิว

การแทนที่ข้อมูลของคิว ทำได้ 2 วิธีคือ
1.การแทนที่ข้อมูลของคิวแบบลิงค์ลิสต์
2.การแทนที่ข้อมูลของคิวแบบอะเรย์

การแทนที่ข้อมูลของแสตกแบบลิงค์ลิสต์ประกอบด้วย 2 ส่วนคือ
1.Head Node
2.Data Node

การดำเนินการเกี่ยวกับคิว

1. Create Queue จัดสรรหน่วยความจำให้แก่ Head Node และให้ค่า pointer ทั้ง 2 ตัวมีค่าเป็น null และจำนวนสมาชิกจะเป็น 0
2. Enqueue คือ การเพิ่มข้อมูลเข้าไปในคิว
3. Dequeue คือ การนำข้อมูลออกจากคิว
4. Queue Front เป็นการนำข้อมูลที่อยู่ส่วนต้นของคิวมาแสดง
5. Queue Rear เป็นการนำข้อมูลที่อยู่ส่วนท้ายของคิวมาแสดง
6. Empty Queue เป็นการตรวจสอบว่าคิวว่างหรือไม่
7. Full Queue เป็นการตรวจสอบว่าคิวเต็มหรือไม่
8. Queue Count เป็นการนับจำนวนสมาชิกที่อยู่ในคิว

การนำข้อมูลเข้าสู่คิว เราจะไม่สามารถนำข้อมูลเข้าในขณะที่คิวเต็ม หรือไม่มีที่ว่างได้ ถ้าเราพยายาม
นำข้อมูลเข้าจะทำให้เกิดความผิดพลาดที่เรียกว่า overflow
ส่วนการนำข้อมูลออกจากคิว จะไม่สามารถนำออกจากคิวที่ว่างได้ ถ้าพยายาม จะทำให้เกิดความผิดพลาดที่เรียกว่า underflow

ในการนำเข้าข้อมูลในกรณีที่คิวเต็ม แต่สภาพความเป็นจริงแล้ว front ไม่ได้อยู่ในช่องแรกของคิว จะไม่สามารถนำที่ว่างในส่วนหน้ามาใช้ได้อีก

วิธีการแก้ปัญหาดังกล่าว จะใช้คิวที่เป็นแบบคิววงกลม (Circular Queue) ซึ่งคิวช่องสุดท้ายนั้นต่อกับคิวช่องแรกสุด

คิวแบบวงกลมจะเต็มก็ต่อเมื่อมีการเพิ่มข้อมูลเข้าไปในคิวเรื่อย ๆ จนกระทั่ง rear มีค่าน้อยกว่า front อยู่หนึ่งค่าคือ rear = front - 1

การประยุกต์ใช้คิว
คิวจะถูกประยุกต์ใช้มากในการจำลองระบบงาน
ธุรกิจ เช่น การให้บริการลูกค้า ต้องวิเคราะห์จำนวนลูกค้าในคิวที่เหมาะสม ว่าควรเป็นจำนวนเท่าใด เพื่อให้ลูกค้าเสียเวลาน้อยที่สุด ในด้านคอมพิวเตอร์ ได้นำคิวเข้ามาใช้ คือ ในระบบปฏิบัติการ (Operation System) ในเรื่องของคิวของงานที่เข้ามาทำงาน (ขอใช้ทรัพยากระบบของ CPU) จะจัดให้งานที่เข้ามาได้ทำงานตามลำดับความสำคัญ


DTS 07-05-08-2552

ไม่มีความคิดเห็น:

แสดงความคิดเห็น