Data Structures - Queue ADT
Queue is a data structure in which insertion is done in one end (rear) whereas deletion of an element can be done in another end (front).
Queue Data Structure support two operations:
- ENQUEUE - insert an element at the end of list or Rear end
- DEQUEUE- delete an element from the front of the list or Front end
Queue Data Structure is a FIFO data structure(First in First out).
Sample Use cases for Queue Data Structure
- Theater ticket counter
- Train ticket counter
- Order queue for Online Shopping portal
- Task Queue for computer system such as CPU task scheduling,
- Document Queue for Printer
- Signal queue for Interrupts handling
Queue Data Structure - Example 1
Implementation of Queue Data Structure
Queue is implemented by either an array or the linked list.
Array and Linked List implementation of queue give O(1) running time for all operations.
For array implementation, we can keep an array, Queue[], positions(Front and Rear) and queue size which keeps track of number of elements in the queue.
To Enqueue an new element X, we need to increase the size and increment the Rear position,then set Queue[rear] = X.
To
Queue - circular array implementation
Whenever the front or rear reaches to the end of the array, it is wrapped back to the beginning.
Queue Data Structure - Basic Operations
Queue is used for the following two basic operations:
- enqueue(): To add new data into the queue
- dequeue(): To remove data from queue
Queue Data Structure Enqueue() Operation
Enqueue is used to insert a new data into the queue.
To enqueue of new element X
- first check whether the queue is full or not.
- If the queue is full, generate the overflow error message
- if the queue is not full, increase the size of the queue and rear value and then set queue[rear]=X.
Queue Data Structure - Implementation of enqueue
void enqueue(int data)
{
if(size==MAXVALUE))
cout<<"The Queue is full";
else
{
Queue[++rear]=data;
size++;
cout<<"data is inserted";
}
}
Queue Data Structure - Dequeue() Operation
Dequeue() operation is used to remove a data element from the queue.
In a Dequeue Operation, data is not directly removed. Instead, start index is moved to the next position and hence the first element is not part of the queue anymore and 2nd element becomes the 1st element. Now, the size of the queue is reduced by 1
To dequeue of element X
- first check whether the queue is empty or not.
- If the queue is empty, generate the underflow error message.
- If the queue is not empty, access the value of Queue[front] and then increase the front index and decrease the size of the queue.
Queue Data Structure - Implementation of dequeue() in C++
void dequeue()
{
int data;
if(size==0)
cout<<"The queue is empty";
else
{
data = Queue[front];
front = front + 1;
size--;
cout<<"The return value is"<< data;
}
}