วันจันทร์ที่ 31 สิงหาคม พ.ศ. 2552

DTS : 07-05/08/2552

Queue

คิว เป็นโรงสร้างข้อมูลแบบเชิงเส้นหรือลิเนียร์ลิสต์ มีลักษระข้อมูลข้อมูลที่นำเข้าไปเก็บก่อนจะถูกนำออกมาทำงานก่อน ส่วนข้อมูลที่เข้าไปเก็บทีหลังก็จะถูกนำออกมาใช้งานทีหลัง ขึ้นอยู่กับลำดับการเก็บข้อมูล จะเรียกลักษณะการทำงานแบบนี้ว่า เข้าก่อนออกก่อน หรือ First In First Out (FIFO)


การทำงานของคิว
- การใส่สมาชิกใหม่ลงไปในคิว เรียกว่า Enqueue คือ การใส่ข้อมูล newenqueue ลงไปในที่ส่วนเรียร์ของคิว - การนำสมาชิกออกจากคิว เรียกว่า dequeue คือ การนำออกจากส่วนหน้าของคิว และให้ข้อมูลนั้นกับ element

- การนำข้อมูลที่อยู่ตอนต้นของคิวมาแสดง เรียกว่า Queue Front
- การนำข้อมูลตอนท้ายของคิวมาแสดง เรียกว่า Queue Rear

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

การแทนที่ข้อมูลในคิวแบบลิงค์ลิสต์ ประกอบไปด้วย 2 ส่วน คือ
1. Head Node จะประกอบด้วย 3 ส่วน คือ พอยเตอร์จำนวน 2 ตัว คือ Front และ rear กับจำนวนสมาชิกในคิว
2. Date Node ประกอบไปด้วยข้อมูล และพอยเตอร์ชี้ไปยังข้อมูลตัวถัดไป
การแทนที่ข้อมูลในคิวแบบอะเรย์
การนำข้อมูลเข้าสู่คิว ไม่สามารถนำเข้าในขณะที่คิวเต็มได้ ถ้าพยายามนำข้าจะเกิดข้อผิดพลาด เรียกว่า overflow
การนำข้อมูลออกจากคิว จะไม่สามารถนำอะไรออกจากคิวที่ว่างเปล่าได้ ถ้าพยายามจะทำให้เกิดความผิดพลาด เรียกว่า underflow
วิธีการแก้ปัญหาในการนำเข้าข้อมูลในกรณีที่คิวเต็ม ในสภาพที่ front ไม่ได้อยู่ในช่องแรกของคิว ให้ใช้คิวที่เป็นวงกลม(Circular Queue) กรณีที่เป็นคิวแบบวงกลม คิวจะเต็มก็ต่อเมื่อมีการเพิ่มข้อมูลเข้าไปในคิวเรื่อยๆจนกระทั่ง rear มีค่าน้อยกว่า front อยู่หนึ่งค่า rear=front-1

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

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

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