Queue Implementation Array Linked List Queue Array Implementation












































- Slides: 44
Queue Implementation Ø Array ØLinked List
Queue: Array Implementation Array, size = 5 ตวอยางการแทนควดวย ���� front = rear = 0 เพม B, C ลบ A A A front = rear = 1 A front = 1 B C rear = 3 B C front = 2 rear = 3
Queue : Array Implementation การนำสมาชกเขาคว Empty queue front = rear = 0 Enqueue(A) A front rear Enqueue(B) A front B rear (enqueue)
Queue : Array Implementation (enqueue) (��� ) การนำสมาชกเขาคว Enqueue (C) A B rear front Enqueue(D) A C B C front Enqueue(E) Error : Overflow D rear
Queue : Array Implementation การนำสมาชกออกจากคว A B C front (dequeue) D rear dequeue B C front D rear dequeue C D front rear
Queue : Array Implementation การนำสมาชกออกจากคว (dequeue) (��� ) dequeue D front rear dequeue front = rear = 0 dequeue Error : Underflow
Queue: Linked List Implementation front A rear B D X struct node { char name; struct node *link; }
Queue: Linked List Implementation front A rear B D X void enqueue (datatype newdata) {. . . rear link = newnode; rear = newnode; } rear F X
Queue: Linked List Implementation front rear A B char dequeue () { … deldata = front data; front = front link; …} D F X
Queue: Linked List Implementation How to detect that a queue is either full or empty ? 19/96
Imagine we have a queue of integer, Q, size = 6. Draw picture of both structures after the following operations: . 1 enqueue(Q, 5) 2. enqueue(Q, 1) 3. enqueue(Q, 7) 4. enqueue(Q, 3) 5. dequeue(Q) 6. dequeue(Q) 20/96 7. enqueue(Q, 15) 8. enqueue(Q, 6) 9. dequeue(Q) 10. dequeue(Q) 11. enqueue(Q, 10) 12. enqueue(Q, 9) ���� �. ������������������������
Problem with Array Implementation (size = 7) maxq G H front=5 J rear=7 Enqueue K G H front=5 22/96 ���� �. ������������������������ J Error: Overflow rear=8
Circular Queue การนำขอมลเขาคววงกลม D E front rear Enqueue(A) A D rear E front Enqueue(B) A B rear D front E
Circular Queue การนำสมาชกออกจากคววงกลม A B rear D E front Dequeue A B rear Dequeue A B front rear E front
rear=12 front=1 P O Enqueue N Q F G Queue is Full H M L 28/96 I K J rear=7 rear=6 rear=5 ���� �. ������������������������
rear=12 front=1 O Dequeue P Q front=2 F N G M H L front=3 I K J 2 rooms available 29/96 ���� �. ������������������������
rear=12 rear=1 P O Enqueue N Q S Queue is Full H M L 30/96 rear=2 R I K J ���� �. ������������������������ front=3
Array Implementation J F G H I rear=1 front=4 subprogram enqueue (datatype newdata) 1. rear+1 2. if (rear == maxq) 2. 1 rear 1 3. return 31/96 ���� �. ������������������������
Array Implementation J rear=1 F G H I front=4 subprogram dequeue (datatype olddata) 1. front+1 2. if (front == maxq) 2. 1 front 1 3. return 32/96 ���� �. ������������������������
How can we know that a circular queue (array and linked list) is empty or full ? 33/96 ���� �. ������������������������
Imagine we have a Circular queue of integer, Q, size = 6. Draw picture of both structures after the following operations: . 1 enqueue(Q, 5) 2. enqueue(Q, 1) 3. enqueue(Q, 7) 4. enqueue(Q, 3) 5. dequeue(Q) 6. dequeue(Q) 34/96 7. enqueue(Q, 15) 8. enqueue(Q, 6) 9. dequeue(Q) 10. dequeue(Q) 11. enqueue(Q, 10) 12. enqueue(Q, 9) ���� �. ������������������������
Imagine we have a priority queue of integer, Q size = 5. Draw picture of both structures after the following operations: operation (Q, pri, data(. 1 enqueue(Q, 1, 7) 7. enqueue(Q, 3, 1(. 2 enqueue(Q, 1, 4) 8. dequeue(Q, x(. 3 enqueue(Q, 3, 3) 9. dequeue(Q, y(. 4 dequeue(Q, x) 10. enqueue(Q, 2, y(. 5 enqueue(Q, 2, 9) 11. enqueue(Q, 3, x(. 6 enqueue(Q, 1, x) 12. enqueue(Q, 2, 2( 40/96 ���� �. ������������������������
Array Implementation Linked List Implementation 41/96 ���� �. ������������������������
Which kind of implementation either array or linked list that we should choose for Priority Queue Implementation? 42/96 ���� �. ������������������������
Imagine we have a priority circular queue of integer, Q size = 5. Draw picture of both structures after the following operations: . 1 enqueue(Q, 1, 7). 2 enqueue(Q, 1, 4). 3 enqueue(Q, 3, 3). 4 dequeue(Q, x). 5 enqueue(Q, 2, 9). 6 enqueue(Q, 1, x) 43/96 7. enqueue(Q, 3, 1( 8. dequeue(Q, x( 9. dequeue(Q, y( 10. enqueue(Q, 2, y( 11. enqueue(Q, 3, x( 12. enqueue(Q, 2, 2( ���� �. ������������������������