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

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

25 June 2006 12.00 AM 1Week 08 - Queue คิว (Queue) Queue ADT Queue เป็น List ชนิดหนึ่ง แต่สำหรับ queue การแทรกข้อมูลลงบน queue (Insertion) จะ ทำที่ปลายใดปลายหนึ่งของ.

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


งานนำเสนอเรื่อง: "25 June 2006 12.00 AM 1Week 08 - Queue คิว (Queue) Queue ADT Queue เป็น List ชนิดหนึ่ง แต่สำหรับ queue การแทรกข้อมูลลงบน queue (Insertion) จะ ทำที่ปลายใดปลายหนึ่งของ."— ใบสำเนางานนำเสนอ:

1 25 June AM 1Week 08 - Queue คิว (Queue) Queue ADT Queue เป็น List ชนิดหนึ่ง แต่สำหรับ queue การแทรกข้อมูลลงบน queue (Insertion) จะ ทำที่ปลายใดปลายหนึ่งของ Queue ในขณะ ที่การลบข้อมูลออกจากคิว (Deletion) จะ กระทำที่อีกปลายหนึ่งของ List Queue เป็น List ชนิดหนึ่ง แต่สำหรับ queue การแทรกข้อมูลลงบน queue (Insertion) จะ ทำที่ปลายใดปลายหนึ่งของ Queue ในขณะ ที่การลบข้อมูลออกจากคิว (Deletion) จะ กระทำที่อีกปลายหนึ่งของ List

2 25 June AM 2Week 08 - Queue คิว (Queue) การดำเนินการ (Operation) พื้นฐานบนคิว Enqueue คือการ Insert สมาชิกลงไปที่ด้านปลายของ List ซึ่งเรียกว่าตำแหน่ง Rear Dequeue คือการ Delete และ Return ค่าสมาชิกที่ด้าน หัว List ซึ่งเรียกว่าตำแหน่ง Front

3 25 June AM 3Week 08 - Queue ลักษณะของ Queue (Abstract Model of a Queue) การดำเนินการทุกอย่างบน Queue ไม่ว่าจะเกิด จากการสร้างโดยใช้ Array หรือการสร้างโดย ใช้ List ก็ตาม ล้วนมี running time เป็น O(1) ซึ่งน้อยมากๆ

4 25 June AM 4Week 08 - Queue การสร้าง Queue โดยใช้ Array (Array Implementation of Queue) สำหรับโครงสร้างข้อมูลแบบ Queue แต่ละตัว เราต้องเก็บค่าต่างๆของ Queue ดังนี้ queue[ ] อาร์เรย์เก็บค่าสมาชิกแต่ ละตัวในคิว queue[ ] อาร์เรย์เก็บค่าสมาชิกแต่ ละตัวในคิว front ตำแหน่งปลายด้านหัวของคิว front ตำแหน่งปลายด้านหัวของคิว rear ตำแหน่งปลายด้านท้ายของ คิว rear ตำแหน่งปลายด้านท้ายของ คิว size จำนวนสมาชิกที่มีอยู่ในคิว ทั้งหมด size จำนวนสมาชิกที่มีอยู่ในคิว ทั้งหมด

5 25 June AM 5Week 08 - Queue การสร้าง Queue โดยใช้ Array (Array Implementation of Queue) Enqueueenqueue ข้อมูล element X ลงไปใน คิว 1. เพิ่มค่า size และเพิ่มค่า rear 2. set ค่า queue[rear] = X front rear X

6 25 June AM 6Week 08 - Queue การสร้าง Queue โดยใช้ Array (Array Implementation of Queue) Dequeue ในการ dequeue ข้อมูล element หนึ่งๆ ออกไป 1. return ค่า queue[front] 2. ลดค่า size และเพิ่มค่า front ขึ้นหนึ่งค่า rear front

7 25 June AM 7Week 08 - Queue Circular Array Implementation เมื่อไรก็ตามที่ค่า Front และ Rear ขึ้นลงไป ถึงสุดขอบเขตของอาร์เรย์ ให้รวบกลับ ขึ้นมาเป็นส่วนเริ่มต้นของอาร์เรย์ เรียกว่า เป็นการสร้างโดยใช้ Circular Array เมื่อไรก็ตามที่ค่า Front และ Rear ขึ้นลงไป ถึงสุดขอบเขตของอาร์เรย์ ให้รวบกลับ ขึ้นมาเป็นส่วนเริ่มต้นของอาร์เรย์ เรียกว่า เป็นการสร้างโดยใช้ Circular Array ถ้าไม่ว่าการเพิ่มค่า Front หรือค่า Rear ทำ ให้เกินขอบเขตของอาร์เรย์ ค่าตำแหน่งจะ ถูก reset กลับไปเป็นตำแหน่งแรกของ อาร์เรย์ ถ้าไม่ว่าการเพิ่มค่า Front หรือค่า Rear ทำ ให้เกินขอบเขตของอาร์เรย์ ค่าตำแหน่งจะ ถูก reset กลับไปเป็นตำแหน่งแรกของ อาร์เรย์

8 25 June AM 8Week 08 - Queue ข้อที่ควรระวังในการใช้ Circular Array เราต้องตรวจสอบว่า Queue ดังกล่าวเป็นคิว เปล่า (Empty Queue) หรือไม่ เนื่องจากการ Dequeue ในขณะที่คิวว่างจะเป็นการ return ค่าที่ไม่ได้รับการกำหนดค่าเป็นขยะออกมา ซึ่งเราอาจไม่ได้สังเกตข้อผิดพลาดนี้ เราต้องตรวจสอบว่า Queue ดังกล่าวเป็นคิว เปล่า (Empty Queue) หรือไม่ เนื่องจากการ Dequeue ในขณะที่คิวว่างจะเป็นการ return ค่าที่ไม่ได้รับการกำหนดค่าเป็นขยะออกมา ซึ่งเราอาจไม่ได้สังเกตข้อผิดพลาดนี้ ขนาดของ Queue ขนาดของ Queue ในขณะที่คิวว่าง (Empty Queue) จะได้ ในขณะที่คิวว่าง (Empty Queue) จะได้ rear = front -1 เมื่อไม่ใช้ Circular Array ขนาดของอาร์เรย์ เป็น Asize คิวจะเต็มเมื่อมีสมาชิกทั้งหมด Asize ตัว เมื่อไม่ใช้ Circular Array ขนาดของอาร์เรย์ เป็น Asize คิวจะเต็มเมื่อมีสมาชิกทั้งหมด Asize ตัว

9 25 June AM 9Week 08 - Queue ตัวอย่างการดำเนินการบน Queue สถานะเริ่มต้น (Initial State) หลังจากEnqueue(1)

10 25 June AM 10Week 08 - Queue หลังจากEnqueue(3) หลังจาก Dequeue ซึ่งเป็นการ Return ค่า 2 ออกมา

11 25 June AM 11Week 08 - Queue หลังจากการ Dequeue ซึ่งเป็นการ Return ค่า 4 ออกมา หลังจากการ Dequeue ซึ่งเป็นการ Return ค่า 1 ออกมา

12 25 June AM 12Week 08 - Queue หลังจากการ Dequeue ซึ่งเป็นการ Return ค่า 3 ออกมา และทำให้คิวว่าง (Make Empty Queue) สังเกตว่า Rear = Front - 1

13 25 June AM 13Week 08 - Queue การประกาศ Queue ADTs /*Declare Function Prototype*/ PtrToQRecord createQueue(int); void makeEmpty(PtrToQRecord); Boolean isEmpty(PtrToQRecord); Boolean isFull(PtrToQRecord); void front(PtrToQRecord); void enqueue(TypeOfElement, PtrToQRecord); void dequeue(PtrToQRecord); void deleteQueue(PtrToQRecord); const CAPACITY; Struct QueueRecord { int front; int rear; int size; TypeOfElement queuearray[CAPACITY]; };

14 25 June AM 14Week 08 - Queue โครงสร้างของ Structure สำหรับ Queue Struct QueueRecord { int front; int rear; int size; int queueArray[CAPACITY]; int queueArray[CAPACITY];} int front int rear int size int queueArray QueueRecord

15 25 June AM 15Week 08 - Queue IsEmpty การตรวจสอบว่าอาร์เรย์ของ Queue เป็นอาร์เรย์เปล่าหรือไม่ Algorithm Boolean isEmpty(pointerToQRecord) pointerToQRecord – pointer to queue record Output True – if the queue is empty False – if the queue is not empty Begin (return size of pointerToQRecord is 0) End

16 25 June AM 16Week 08 - Queue MakeEmpty การทำให้คิวเป็นคิวว่าง Algorithm makeEmpty(pointerToQRecord) pointerToQRecord – pointer to queue record Begin (Set size of pointerToQRecord to 0) (Set front of pointerToQRecord to 1) (Set rear of pointerToQRecord to 0) End

17 25 June AM 17Week 08 - Queue Enqueue การ Enqueue ใส่ข้อมูลลงในคิว Algorithm enqueue(newElement, pointerToQRecord) newElement – new element to be entered into the queue pointerToQRecord – pointer to queue record Begin If (isFull(pointerToQRecord) is True) (Show Error Full Queue) Else { (Increase size of pointerToQRecord by 1) If ((rear of pointerToQRecord + 1) = CAPACITY) (Set rear of pointerToQRecord to 0) Else (Increase rear of pointerToQRecord by 1) (Set queueArray of pointerToQRecord [rear of pointerToQRecord] to newElement) } End


ดาวน์โหลด ppt 25 June 2006 12.00 AM 1Week 08 - Queue คิว (Queue) Queue ADT Queue เป็น List ชนิดหนึ่ง แต่สำหรับ queue การแทรกข้อมูลลงบน queue (Insertion) จะ ทำที่ปลายใดปลายหนึ่งของ.

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


Ads by Google