0% found this document useful (0 votes)
23 views29 pages

Queue

Uploaded by

Ezekiel Nequit
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views29 pages

Queue

Uploaded by

Ezekiel Nequit
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 29

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

EnQueue DeQueue Pop

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:

1). Printer Queue


2). Process Scheduling
3). Simulation Wait

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

Next position = (i+1)%N


Previous position = (i+N-1)%N 10 3

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

You might also like