You are on page 1of 26

QUEUE DATA STRUCTURE

QUEUE
 A queue is a linear list of elements in which
 – deletion can take place only at one end
called Front, and
 – Insertion takes place at one end called Rear
 Queues are also known as First-In-
First-Out (FIFO) list
 Queue are represented in two-ways
 – Linear Array
– One-way Linked List
Applications of Queue

 Queue, as the name suggests is used whenever we need


to manage any group of objects in an order in which the
first one coming in, also gets out first while the others
wait for their turn, like in the following scenarios:
 Serving requests on a single shared resource, like a
printer, CPU task scheduling etc.
 In real life scenario, Call Center phone systems uses
Queues to hold people calling them in an order, until a
service representative is free.
 Handling of interrupts in real-time systems. The
interrupts are handled in the same order as they arrivei.e
First come first served.
Array representation of Queue

A queue is maintained by a
– linear array QUEUE
– Two pointer variable

• FRONT : Containing the location of the


front element of the queue
• REAR : Containing the location of the
rear element of the queue
• FRONT == NULL indicates that the

queue is empty
Array representation of Queue
Array representation of Queue
CIRCULAR QUEUE

Queue is assumed to be circular


 QUEUE[1] comes after QUEUE[N]
 Instead of increasing REAR to N +1, we
reset REAR = 1 and then assign
QUEUE[REAR] = ITEM
CIRCULAR QUEUE
CIRCULAR QUEUE
CIRCULAR QUEUE
Algorithm to Insert in Q (Enqueue)

[1] If FRONT = 1 and REAR = N or if FRONT =


REAR + 1 then Print: Overflow and Exit
[2] If FRONT = NULL then

Set FRONT = 1 and REAR = 1


Else If REAR = N then
Set REAR = 1
Else
Set REAR = REAR + 1
[3] Set QUEUE[REAR] = ITEM
[4] Exit
Algorithm to Delete from Q (dequeue)

[1] If FRONT = NULL then Print: Underflow and


Exit
[2] Set ITEM = QUEUE[FRONT]
[3] If FRONT = REAR then

Set FRONT = NULL and REAR = NULL


Else If FRONT = N then
Set FRONT = 1
Else
Set FRONT = FRONT + 1
[4] Exit
Complexity
Complexity of Enqueue : O(1)
Complexity of Dequeue : O(1)
Deque
 A deque is a linear list in which elements can be added or removed at either
end but not in the middle
 Deque is implemented by a circular

array DEQUE with pointers LEFT and


RIGHT which points to the two end of the deque.
 Initially LEFT = RIGHT = NULL (Deque is empty)
 When element is inserted at RIGHT side:

RIGHT = RIGHT +1
 When element is inserted at LEFT side:

LEFT = LEFT – 1
 When element is deleted from RIGHT side:

RIGHT = RIGHT -1
 When element is deleted from LEFT side:

LEFT = LEFT + 1
 Deque is FULL when:
 LEFT =1 and RIGHT = n OR LEFT = RIGHT +1
Deque
Deque
Deque
Deque
Variation of deque

• There are two variation of deque


[1] Input-restricted queue: Deque which
allows insertions at only one end of the
list but allows deletion at both ends of the
list
[2] Output-restricted queue: Deque which
allows deletion at only one end of the list
but allows insertion at both ends of the list
Priority Queue

 A priority queue is a collection of elements


such that each elements has been assigned
a priority and such that the order in which
elements are deleted and processed comes
from the following rules:
[1] Elements of higher priority is processed
before any elements of lower priority
[2] Two elements with the same priority are
processed according to the order in which
they were added to the queue
Priority Queue
There are different ways a priority
queue can be represented such as
[1] One-way List
[2] Array representation of Priority
Queue
Array representation of Priority
Queue
Separate queue for each level of priority
 Each queue will appear in its own circular array and
must have its own pair of pointers, FRONT and
REAR
Array representation of Priority
Queue
Array representation of Priority
Queue
 Insertion Algorithm
This algo. Adds an element ‘ITEM’ with priority’M’ to two
dimensional array QUEUE
[1] Insert ITEM as the rear element in
row M of QUEUE
[2] Exit
 Deletion Algorithm
This algorithm deletes the highest priority element from the QUEUE
[1] Find the smallest K such that
FRONT[K] is not equal to NULL
[2] Delete and process the front element
in row K of QUEUE
[3] Exit
One-Way List Representation of
a Priority Queue

[1] Each node in the list will contain three


items of information: an information
field INFO, a priority number PRN,
and a link number LINK
[2] A node X precedes a node Y in the list
(a) when X has higher priority than Y or
(b) when both have same priority but X
was added to the list before Y
One-Way List Representation of
a Priority Queue
Insertion and Deletion

 Deletion : Delete the first node in the list.


 Insertion: Find the location of Insertion
Add an ITEM with priority number N
[a] Traverse the list until finding a node X
whose priority exceeds N. Insert ITEM in
front of node X
[b] If no such node is found, insert ITEM
as the last element of the list

You might also like