Queue Implementation Array Linked List Queue Array Implementation

  • Slides: 44
Download presentation

Queue Implementation Ø Array ØLinked List

Queue Implementation Ø Array ØLinked List

Queue: Array Implementation Array, size = 5 ตวอยางการแทนควดวย ���� front = rear = 0

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

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

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

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

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

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)

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

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

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

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

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)

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

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

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

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

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.

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.

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

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

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

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 ���� �. ������������������������

Array Implementation Linked List Implementation 41/96 ���� �. ������������������������

Which kind of implementation either array or linked list that we should choose for

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

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( ���� �. ������������������������