Queue
Queue
Queue ADT
Rear/ Front/
Tail Head
Stack – Last-In-First-Out
(LIFO)
Queue – First-In-First-Out
(FIFO)
2
Queue ADT
A list or collection with Operations:
the restriction that
1). EnQueue(x)
insertion can be
performed at one end Or push(x) in stack
called rear/tail and
deletion can be performed 2). DeQueue()
other end called Or pop() in stack
front/head 3). Front() or Peek()
4). IsEmpty()
3
Queue ADT
Operations:
EnQueue DeQueue
1). EnQueue(x)
Or push(x) in stack
Queue
2). DeQueue()
Or pop() in stack
3). Front() or Peek()
4). IsEmpty()
4
Queue ADT Push
Queue
Stack
5
Queue ADT
Operations:
rear front 1). EnQueue(x)
2). DeQueue()
3). Front() or Peek()
4). IsEmpty()
2
EnQueue(2)
Queue EnQueue(5)
6
Queue ADT
Operations:
rear rear front 1). EnQueue(x)
2). DeQueue()
3). Front() or Peek()
4). IsEmpty()
52
EnQueue(2)
Queue EnQueue(5)
EnQueue(3)
7
Queue ADT
Operations:
rear rear front 1). EnQueue(x)
2). DeQueue()
3). Front() or Peek()
4). IsEmpty()
352
EnQueue(2)
Queue EnQueue(5)
EnQueue(3)
EnQueue(7)
8
Queue ADT
Operations:
rear rear front 1). EnQueue(x)
2). DeQueue()
3). Front() or Peek()
4). IsEmpty()
7352
EnQueue(2)
Queue EnQueue(5)
EnQueue(3)
EnQueue(7)
DeQueue()
9
Queue ADT
Operations:
rear frontfront 1). EnQueue(x)
2). DeQueue()
2 3). Front() or Peek()
4). IsEmpty()
7352
EnQueue(2)
EnQueue(5)
Queue
EnQueue(3)
EnQueue(7)
DeQueue()
Front()
IsEmpty()
10
Queue ADT
Applications:
11
Implementation
Implementation of Queues
We can implement Queues using:
1). Array
2). Linked Lists
13
Array Implementation of Queues
int A[10]
front = -1
rear = -1 0 1 2 3 4 5 6 7 8 9
IsEmpty()
{
If front == -1 && rear -1
return true
Else
return false
} 14
Array Implementation of Queues
int A[10]
front = -1
rear = -1 0 1 2 3 4 5 6 7 8 9
IsFull()
{
If rear == size(A) - 1
Print “Queue is full”
return;
} 15
Array Implementation of Queues
int A[10] front
front = -1
2
rear = -1
0 1 2 3 4 5 6 7 8 9
Enqueue()
{ rear Enqueue(2)
If IsFull() Enqueue(5)
return
Else
If IsEmpty()
{ front = rear = 0}
Else
{ rear = rear + 1}
A[rear] = x 16
}
Array Implementation of Queues
int A[10] front
front = -1
2 5
rear = -1
0 1 2 3 4 5 6 7 8 9
Enqueue()
{ rear rear Enqueue(2)
If IsFull() Enqueue(5)
return
Else Enqueue(7)
If IsEmpty()
{ front = rear = 0}
Else
{ rear = rear + 1}
A[rear] = x 17
}
Array Implementation of Queues
int A[10] front
front = -1
2 5 7
rear = -1
0 1 2 3 4 5 6 7 8 9
Enqueue()
{ rear rear Enqueue(2)
If IsFull() Enqueue(5)
return
Else Enqueue(7)
If IsEmpty()
{ front = rear = 0}
Else
{ rear = rear + 1}
A[rear] = x 18
}
Array Implementation of Queues
Dequeue() frontfront
{
If IsEmpty () 2 5 7
return 0 1 2 3 4 5 6 7 8 9
Else
If front == rear () rear Enqueue(2)
{ front = rear = -1} Enqueue(5)
Else
Enqueue(7)
{ front = front + 1}
Dequeue()
}
19
Array Implementation of Queues
Dequeue() front
{
If IsEmpty () 5 7 3
return 0 1 2 3 4 5 6 7 8 9
Else
If front == rear () rear rear Enqueue(2)
{ front = rear = -1} Enqueue(5)
Else
Enqueue(7)
{ front = front + 1}
Dequeue()
} Enqueue(3)
Enqueue(1)
20
Array Implementation of Queues
Dequeue() front rear
{
If IsEmpty () 5 7 3 1
return 0 1 2 3 4 5 6 7 8 9
Else
If front == rear () rear Enqueue(2)
{ front = rear = -1} Enqueue(5)
Else
Enqueue(7)
{ front = front + 1}
Dequeue()
} Enqueue(3)
Enqueue(1)
Enqueue(9)
21
Array Implementation of Queues
Dequeue() front rear rear
{
If IsEmpty () 5 7 3 1 9
return 0 1 2 3 4 5 6 7 8 9
Else
If front == rear () Enqueue(2) Enqueue(10)
{ front = rear = -1} Enqueue(5)
Else
Enqueue(7)
{ front = front + 1}
Dequeue()
} Enqueue(3)
Enqueue(1)
Enqueue(9)
22
Array Implementation of Queues
Dequeue() front rear rear
{
If IsEmpty () 5 7 3 1 9 10
return 0 1 2 3 4 5 6 7 8 9
Else
If front == rear () Enqueue(2) Enqueue(10)
{ front = rear = -1} Enqueue(5) Enqueue(6)
Else
Enqueue(7)
{ front = front + 1}
Dequeue()
} Enqueue(3)
Enqueue(1)
Enqueue(9)
23
Array Implementation of Queues
Dequeue() front rear rear
{
If IsEmpty () 5 7 3 1 9 10 6
return 0 1 2 3 4 5 6 7 8 9
Else
If front == rear () Enqueue(2) Enqueue(10)
{ front = rear = -1} Enqueue(5) Enqueue(6)
Else Enqueue(4)
Enqueue(7)
{ front = front + 1}
Dequeue()
} Enqueue(3)
Enqueue(1)
Enqueue(9)
24
Array Implementation of Queues
Dequeue() front rear rear
{
If IsEmpty () 5 7 3 1 9 10 6 4
return 0 1 2 3 4 5 6 7 8 9
Else
If front == rear () Enqueue(2) Enqueue(10)
{ front = rear = -1} Enqueue(5) Enqueue(6)
Else Enqueue(4)
Enqueue(7)
{ front = front + 1}
Dequeue() Enqueue(2)
} Enqueue(3)
Enqueue(1)
Enqueue(9)
25
Array Implementation of Queues
Dequeue() frontfront rear rear
{
If IsEmpty () 5 7 3 1 9 10 6 4 2
return 0 1 2 3 4 5 6 7 8 9
Else
If front == rear () Enqueue(2) Enqueue(10)
{ front = rear = -1} Enqueue(5) Enqueue(6)
Else Enqueue(4)
Enqueue(7)
{ front = front + 1}
Dequeue() Enqueue(2)
} Enqueue(3) Dequeue()
Enqueue(1)
Enqueue(9)
26
Array Implementation of Queues
front rear
7 3 1 9 10 6 4 2
0 1 2 3 4 5 6 7 8 9
0
rear 9 1
2
8 front
2
Current position = i
6 7
7 9 1 4
6 27
5
Array Implementation of Queues
Enqueue() rear 0
rear 9 1
{ 20
2
If (rear+1)%N == front front
8 2
return
Else 6 7
If IsEmpty()
{ front = rear = 0}
10 3
Else
{ rear = (rear + 1)%N} 7 9 1 4
A[rear] = x 6 5
}
Enqueue(20)
28
Array Implementation of Queues
Dequeue() rear 0
9 1
{ 20
2
If IsEmpty () front
8 2
return
Else 6 7
If front == rear () front
{ front = rear = -1} 10 3
Else
{ front = (front + 1)%N} 7 9 1 4
6 5
}
Enqueue(20)
Dequeue()
29