×

Queue Data Structure

Queue in DS: The queue is a non-primitive and linear data structure. It works on the principle of FIFO (First In First Out). That is, the element that is added first, it is removed first, and the element that is added to the last, it is removed at the end.

Queue Data Structure

We often use a queue in our real world, let's see an example of this: - a person who is come first in the railway ticket reservation line and goes firstly, and another person who is engaged in the last and that person goes out at the end.

A queue has two ends, one is the front end, and the other is the rear end. The element is added to the rear end and removed from the front end.

The queue has the following conditions:

  1. If FRONT = 0, then the queue is empty.
  2. If REAR = size of the queue, then the queue is full.
  3. If FRONT = REAR, then there is at least one element in the queue.
  4. If you want to know the total number of elements in the queue, then you use this formula (REAR - FRONT) +1.

There are two primary operations in the queue.

  • Enqueue
  • Dequeue

When you insert an element in the queue, that process is called Enqueue, and when you remove an element from the queue, that process is called Dequeue.

Algorithm of Enqueue

This algorithm is used to add an element to the queue.

Initialize F = 0 and R = -1Check 0verflow             
If F = 0 and R = MAXSIZE or F = R + 1             
then write overflow and exit if F = NULL             
set F = 0 and R = 0                
else if R = MAXSIZE             
set R = 0
set R = R+1Queue[R] = itemExit

Algorithm of Dequeue

This algorithm is used to remove an element from the queue.

Check underflow    
if F < 0, write underflow and exit
set item = Queue[F]if F = R    
then set F = R = NULL   
else if F = MAXSIZE   
then set F = 0
set F = F+1exit

Types of Queue

  1. Linear Queue
  2. Circular Queue
  3. Priority Queue
  4. Dequeue (Double Ended Queue)

Linear queue: The data elements in the linear queue are organized one by one in sequential order. It works on the principle of FIFO. The performance of the linear queue is inefficient as compared to the circular queue.

Circular queue: Circular queue is also called ring-buffer. The last node of the circular queue is connected to the first node. It works on the principle of FIFO. In the circular queue, the element is added from the rear end and removed from the front end.

Priority Queue: A priority queue is a linear data structure in which every node has some priority that is processed by the following rules.

  • A higher priority element is processed before the lower priority element.
  • If two elements are of the same priority, then those elements are processed according to the sequence in the queue.
  • When deletion is performed, the element which has the highest priority removed first.
  • When the addition is performed, the element which has the highest priority added first.

Dequeue: The full name of the dequeue is a double-ended queue. Dequeue is a linear data structure in which you can add and remove the elements from both the front and back ends.

There are two types of dequeue:

  1. Input-restricted Dequeue
  2. Output-restricted Dequeue

Input-restricted Dequeue

In this queue, elements can be removed from both ends of the queue, but can only be inserted from one end.

Output-restricted Dequeue

In this queue, elements can be inserted from both ends of the queue, but can only be removed from one end.

Applications of Queue

  1. It is used in CPU scheduling and disk scheduling. When the CPU is required at the same time for multiple abstract processes, then the different CPU scheduling algorithms are used by implementing the queue.
  2. It is used to transfer the data between two processes in the asynchronous manner. In this, the queue is used for synchronization. For example - IO buffers, pipes, file IO, etc.
  3. It is also used in print spooling.
  4. It is also used in the graph and BFS (Breadth-First Search). BFS is an algorithm in the data structure that traverses and searches the graph.
  5. It is also used to handle interruptions in real-time systems.
  6. The call center phone systems also use the queue structure. It is used to hold the customer calls in order until an executive is free.

Implementation of Queue

You can implement the queue via the array, stack, and linked list. An array is the easiest way to implement the queue.

To implement queue via an array. 

  • Create an array of the n size. 
  • Initialize the value of the FRONT and REAR to 0. This value means that the array is currently empty.

In this, the first element of the array is FRONT, and the last element of the array is REAR. When you add the elements in the array, the index of the REAR increases, but the FRONT remains the same. The implementation of queue operations is shown below:

Queue Data Structure

Related Topics

Comb Sort

Brush sort is a fairly direct orchestrating computation at first arranged by Wlodzimierz Dobosiewicz and Artur Borowy in 1980, later rediscovered (and given the name "Combsort") by Stephen Lacey and...

5 minutes read.

What is a Threaded Binary Tree?

When we consider those binary trees that are interlinked with each other, we do come across the fact that the fields present in there do consist of NULL values that...

3 minutes read.

Dijkstra’s vs Bellman-Ford Algorithm

The Dijkstra Algorithm One of the SSSP (Single Source Shortest Path) algorithms is Dijkstra's. As a result, it finds the shortest path between a source node and all other nodes in...

7 minutes read.

Doubly Linked List

Doubly Linked List Doubly linked list is another kind of Linked list. Doubly linked list contains two pointers for navigation. In this, we can traverse the list in both directions, either...

4 minutes read.

Find Bridges in a Graph

You have been given a graph. You have to find out the bridges in that graph. Graph may be connected or disconnected. You have to print vertices of particular edge...

4 minutes read.

Bubble Sort vs Heap Sort

In this article, we are going to compare the two most common sorting techniques, Bubble Sort and Heap sort. Before discussing their differences, let us first discuss the idea of...

7 minutes read.

Burning binary tree

Burn the Binary tree starting from the target node You have given a binary tree and a target node value. Now you have to burn the tree from target node. You...

4 minutes read.

Detect Loop in Linked List: Data Structure

Detect the Loop in Linked List: In this problem, we will be seeing some technique through which we can detect the loop in linked list. We will discuss each technique...

3 minutes read.

Insertion sort

Insertion sort is a simple sorting technique. It is best suited for small data sets, but it does not suitable for large data sets. In this technique, we pick an...

4 minutes read.

What is Skewed Binary Tree

To understand the skewed binary tree, we must first understand the concept of a binary tree. A binary is generally the one in which every single node has two further...

3 minutes read.

Convert binary tree to a doubly linked list

Implementation //creating a C++ program for the transition of a binary tree into a linked list. #include <iostream> using namespace std; /* Firstly, let’s create a binary tree that will help us in setting...

4 minutes read.

Tree vs Graph: Data Structure

Difference Between Tree and Graph What is Tree? A tree is a non-linear data structure and finite collection of elements called node. A tree, in which the data items are arranged in...

3 minutes read.

Polish Notation in Data Structures

Arithmetic Expression: An arithmetic expression is defined as several operands or data items combined using several operators. For example; a+b*(c-d) is an expression. Operands: Operands represent the data in an expression...

2 minutes read.

Given a Perfect Binary Tree, Reverse Alternate Levels

Implementation //writing a program in C++ language to see how to approach it. #include <bits/stdc++.h> using namespace std; // creating a tree node. struct Nod { char ky; struct Nod *Lft, *Rt; }; // creating a new utility function...

9 minutes read.

Binary Tree Implementation Using Arrays

Implementation Converting a binary tree into a list of arrays is one interesting problem. Let us see that in depth. In this section, we will see the implementation of the binary Trees...

4 minutes read.

Heap Sort in Data Structure

Heap Sort A heap is a tree-based data structure that has specific properties. Heap is always a complete binary tree (CBT). That is, all the nodes of the tree are completely filled.If...

6 minutes read.

Linear vs Circular Queue: Data Structure

Difference Between Linear and Circular Queue What is Linear Queue? A linear queue is linear data structure which works on first in first out principle. We can say a linear queue is...

3 minutes read.

What is a Height-Balanced Tree in Data Structure

A height-balanced tree is a type of binary tree. If the absolute difference between the heights of the left and right subtree is less than or equal to 1, then...

6 minutes read.

Binary Tree Uses

A binary tree is a tree data structure containing hubs with at most two children for instance a right and left child. The node at the top is insinuated as the...

3 minutes read.

Compare Balanced Binary Tree and Complete Binary Tree

Complete and balanced binary trees are important and general topics in the concept – Tree data structure. Before discussing the complete and balanced binary tree, we need to have an...

8 minutes read.