งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Queue [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Queue [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร"— ใบสำเนางานนำเสนอ:

1 Queue [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
สาขาวิชาเทคโนโลยีคอมพิวเตอร์เคลื่อนที่ คณะเทคโนโลยีสารสนเทศและการสื่อสาร Website : ict.up.ac.th/yeunyong

2 หัวข้อวันนี้ ADT of Queue Value Definition Operation Definition
Implementations of Queue (static memory allocation) Enqueue() , Dequeue() initQueue() , isEmpty() , isFull()

3 ลักษณะของคิวในชีวิตประจำวัน

4 ADT : Value Definition ข้อมูลที่จะเก็บในคิวจะมีชนิดเป็นอย่างไรก็ได้ ขึ้นอยู่กับว่าเราจะเก็บข้อมูลอะไร ข้อมูลที่ต้องการจัดเก็บไม่จำเป็นต้องเป็นข้อมูลเชิงเดี่ยว อาจเป็นข้อมูลเชิงโครงสร้างก็ได้ โครงสร้างมีความสัมพันธ์แบบเชิงเส้น ข้อมูลถูกเก็บเป็นแถวเรียงต่อกันไปในหน่วยความจำ มีลำดับของการใส่ข้อมูลและนำข้อมูลออก

5 ADT : Value Definition (cont’)
ข้อมูลที่เข้าคิวทีหลังจะต่ออยู่ด้านท้ายแถว เรียกตำแหน่งนี้ว่า rear ข้อมูลที่จะนำออกจากคิวได้ต้องเป็นข้อมูลที่อยู่ตำแหน่งหัวแถวเท่านั้น เรียกตำแหน่งนี้ว่า front ข้อมูลที่นำเข้าไปในคิวก่อนจะถูกนำออกมาใช้งานก่อน เข้าก่อนออกก่อน (First In First Out : FIFO)

6 ADT : Operation definition
การนำข้อมูลเข้า (enqueue) ใส่ข้อมูลด้านท้ายสุดของโครงสร้าง (rear) (ถ้าจะเข้าคิวต้องต่อท้ายแถว) การนำข้อมูลออก (dequeue) นำข้อมูลออกจากด้านหน้าของโครงสร้าง (front) (หัวแถวจะได้ออกจากคิวก่อน)

7 Implementation : Accessing Queue
front empty A B C empty empty ข้อมูลออก ข้อมูลเข้า rear การเข้าถึงข้อมูลในโครงสร้างคิวต้องอาศัย index 2 ตัว คือ index ที่ชี้ไปยังข้อมูลตัวแรกของคิว (front) index ที่ชี้ไปยังข้อมูลตัวสุดท้ายของคิว (rear)

8 Implementation : enqueue , dequeue
เพิ่มค่าของ rear ไปอีก 1 ช่อง (กำหนดตำแหน่งท้ายคิวที่จะนำข้อมูลมาต่อ) นำสมาชิกใหม่เข้ามาไว้ ณ ตำแหน่ง rear index dequeue นำข้อมูล ณ ตำแหน่ง front index ออกจากคิว เพิ่มค่าของ front ไปอีก 1 ช่อง (ไปชี้ที่ข้อมูลหัวคิวตำแหน่งถัดไป)

9 Example (implement with C)
1 2 3 Queue[4] A B C D init(Queue) enqueue(‘A’,Queue) enqueue(‘B’,Queue) X = dequeue(Queue) enqueue(‘C’,Queue) enqueue(‘D’,Queue) Y = dequeue(Queue) front = -1 1 2 3 rear = -1 1 2 3

10 Implementation of Queue (static memory allocation)

11 การสร้างคิว คล้ายกับสแตก
ใช้อาร์เรย์ช่วยในการสร้างคิวได้ ในภาษาซี นิยมสร้างคิวโดยกำหนดเป็นตัวแปรแบบ structure ที่ประกอบไปด้วยเขตข้อมูล 3 เขต คือ อาร์เรย์ที่ใช้เก็บข้อมูลในคิว จำนวนเต็มที่ทำหน้าที่เป็น front index จำนวนเต็มที่ทำหน้าที่เป็น rear index ทุกครั้งที่มีการ enqueue, dequeue ทำผ่านฟังก์ชัน enqueue() , dequeue()

12 นอกจากนี้เราอาจต้องสร้างฟังก์ชันเพิ่มเติมเพื่อให้สามารถทำงานได้สมบูรณ์ เช่น
initQueue() – กำหนดค่าเริ่มต้นให้กับคิว isEmpty() – ตรวจสอบว่าคิวว่างหรือไม่ isFull() – ตรวจสอบว่าคิวเต็มหรือไม่ enqueue() – นำข้อมูลใส่ลงคิว dequeue() – ดึงข้อมูลออกจากคิว

13 ต้องกำหนดค่าเริ่มต้นให้กับคิว
#define MAXQUEUE 10 //กำหนดขนาดของคิว typedef struct { int data[MAXQUEUE]; // กำหนดเป็นคิวของ int โดยใช้ array int front; // กำหนด front index int rear; // กำหนด rear index } QUEUE; QUEUE Q; ต้องกำหนดค่าเริ่มต้นให้กับคิว

14 ฟังก์ชัน enqueue() parameter ข้อมูลที่จะใส่ลงคิว
ชื่อของตัวแปรคิวที่จะใส่ข้อมูลลงไป return value ไม่มี body of function ตรวจสอบว่าคิวว่างหรือไม่ ถ้าใช่ -> กำหนดให้ front , rear ชี้ที่ array ช่องแรก ถ้าไม่ใช่ -> เลื่อน rear ไป 1 ตำแหน่ง นำข้อมูลใส่อาร์เรย์ ณ ตำแหน่ง rear

15 ฟังก์ชัน dequeue() parameter ชื่อของตัวแปรคิวที่จะดึงข้อมูลออกมา
return value ผลลัพธ์ของการดึงข้อมูล (ชนิดตามชนิดของข้อมูลใน queue) body of function return ข้อมูลจากอาร์เรย์ ณ ตำแหน่ง front ตรวจสอบว่าคิวมีข้อมูลอยู่ตัวเดียวหรือไม่ ถ้าใช่ -> กำหนดให้ front , rear มีสถานะเป็นคิวว่าง ถ้าไม่ใช่ -> เลื่อน front ไป 1 ตำแหน่ง

16 ฟังก์ชัน initQueue() parameter ชื่อของตัวแปรคิวที่จะกำหนดค่าเริ่มต้น
return value ไม่มี body of function กำหนดค่า front และ rear เป็นสถานะคิวว่าง front = rear = -1

17 ฟังก์ชัน isEmpty() parameter
ชื่อของตัวแปรคิวที่จะตรวจสอบว่าว่างหรือไม่ return value มีได้ 2 สถานะ คือ ว่าง (1) หรือ ไม่ว่าง (0) body of function ตรวจสอบว่าคิวว่างหรือไม่ (front==-1), (rear==-1), ((front==-1)&&(rear==-1)) ถ้าใช่ return 1 , ถ้าไม่ใช่ return 0

18 ฟังก์ชัน isFull() parameter ชื่อของตัวแปรคิวที่จะตรวจสอบว่าเต็มหรือไม่
return value มีได้ 2 สถานะ คือ เต็ม (1) หรือ ไม่เต็ม (0) body of function ตรวจสอบว่าคิวเต็มหรือไม่ ( rear == (MAXQUEUE - 1) ) ถ้าใช่ return 1 , ถ้าไม่ใช่ return 0


ดาวน์โหลด ppt Queue [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร

งานนำเสนอที่คล้ายกัน


Ads by Google