π Queue in DSA – Introduction, Operations, Types, Applications & Programs (Complete Beginner Guide)
Previous Blog in This Series
π Stack in DSA – Introduction, Operations, Applications & Programs
Next Blog in This Series
π Linked List in DSA – Introduction, Types & Programs
π Introduction
After learning Stack, the next important topic in Data Structures & Algorithms (DSA) is the Queue.
A Queue is one of the most fundamental linear data structures used in programming.
It follows a special rule called:
FIFO
First In, First Out
This means the first element inserted is the first element removed.
Real-life examples include:
Ticket counter line
ATM queue
Printer queue
CPU task scheduling
Call center systems
Customer service systems
Message queues in applications
In this complete beginner guide, we will learn:
✔ What is Queue
✔ Why Queue is Needed
✔ FIFO Principle
✔ Basic Operations (Enqueue, Dequeue, Peek, Display)
✔ Types of Queue
✔ Queue Representation
✔ Queue using Arrays
✔ Circular Queue
✔ Queue using Linked List (Brief Intro)
✔ Difference Between Stack and Queue
✔ Applications of Queue
✔ Time Complexity
✔ Common Mistakes
✔ Interview Questions
✔ FAQs
This topic is highly important for:
Placement preparation
Coding interviews
Technical viva
University exams
Advanced DSA learning
π What is Queue?
A Queue is a linear data structure where:
Insertion happens from the Rear
Deletion happens from the Front
This makes queue different from stack.
This follows:
First In, First Out (FIFO)
π₯ Why Queue is Needed?
Without queue:
Task scheduling becomes difficult
Printer jobs become disorganized
CPU process handling becomes inefficient
Customer request management becomes harder
Resource sharing becomes difficult
Queue helps in:
Maintaining proper order
Fair processing of requests
Efficient task scheduling
Better resource management
This is why queue is extremely important.
π Basic Queue Operations
There are mainly 4 important operations:
1. Enqueue Operation
Enqueue means inserting an element into the queue from the rear.
Example:
Enqueue(40)
Result:
FRONT → | 10 | 20 | 30 | 40 | ← REAR
2. Dequeue Operation
Dequeue means removing an element from the front.
Example:
Dequeue()
10 gets removed first.
3. Peek Operation
Peek means viewing the front element without removing it.
Example:
Peek() = 10
Very common interview question.
4. Display Operation
Display means printing all elements of the queue from front to rear.
Example:
10 20 30
This helps in checking queue status.
π Types of Queue
There are mainly 4 important types of queue:
1. Simple Queue
Basic FIFO queue where insertion happens at rear and deletion happens at front.
Most beginner programs use this type.
2. Circular Queue
The last position connects back to the first position.
This avoids memory wastage.
Very important for interviews.
3. Priority Queue
Elements are removed based on priority, not only insertion order.
Higher priority elements are processed first.
Used in CPU scheduling.
4. Deque (Double Ended Queue)
Insertion and deletion can happen from both ends.
Very useful in advanced applications.
π» Queue Representation Using Array
Program Structure
#include <stdio.h> //Includes the standard input/output library for functions like printf() and scanf()
#define MAX 5 //Defines the maximum size of the queue as 5
int queue[MAX]; //Declares an array named queue to store queue elements
int front = -1; //Initializes the front index of the queue to -1 (queue is empty)
int rear = -1; //Initializes the rear index of the queue to -1 (queue is empty)
Explanation:
queue[MAX]stores elementsfront = -1andrear = -1means queue is empty
This is the base of queue implementation.
π» Program: Enqueue Operation
#include <stdio.h> // Includes the standard input/output library for functions like printf()
#define MAX 5 // Defines the maximum size of the queue as 5
int queue[MAX]; // Declares an array named queue to store queue elements
int front = -1; // Initializes the front index of the queue to -1 (queue is empty)
int rear = -1; // Initializes the rear index of the queue to -1 (queue is empty)
void enqueue(int value) // Function to insert an element into the queue
{
if(rear == MAX - 1) // Checks if the queue is full
{
printf("Queue Overflow\n"); // Displays overflow message when queue is full
return; // Exits the function
}
if(front == -1) // Checks if the queue is currently empty
front = 0; // Sets front to 0 for the first inserted element
rear++; // Increments rear index to the next position
queue[rear] = value; // Stores the new value at the rear position
printf("%d inserted into queue\n", value); // Displays the inserted value
}
int main() // Main function where program execution starts
{
enqueue(10); // Inserts 10 into the queue
enqueue(20); // Inserts 20 into the queue
enqueue(30); // Inserts 30 into the queue
return 0; // Ends the program successfully
}
π» Program: Dequeue Operation
#include <stdio.h> // Includes the standard input/output library for functions like printf()
#define MAX 5 // Defines the maximum size of the queue as 5
int queue[MAX] = {10, 20, 30}; // Initializes the queue with elements 10, 20, and 30
int front = 0; // Initializes the front index to the first element of the queue
int rear = 2; // Initializes the rear index to the last inserted element
void dequeue() // Function to remove an element from the queue
{
if(front == -1 || front > rear) // Checks if the queue is empty
{
printf("Queue Underflow\n"); // Displays underflow message when queue is empty
return; // Exits the function
}
printf("%d deleted from queue\n", queue[front]); // Displays the deleted element
front++; // Moves the front index to the next element
}
int main() // Main function where program execution starts
{
dequeue(); // Removes the front element from the queue
return 0; // Ends the program successfully
}
π» Program: Display Queue
#include <stdio.h> // Includes the standard input/output library for functions like printf()
int queue[5] = {10, 20, 30}; // Initializes the queue array with elements 10, 20, and 30
int front = 0; // Initializes the front index to the first element of the queue
int rear = 2; // Initializes the rear index to the last inserted element
void display() // Function to display all elements of the queue
{
int i; // Loop variable for traversing the queue
if(front == -1 || front > rear) // Checks if the queue is empty
{
printf("Queue is Empty\n"); // Displays a message if the queue is empty
return; // Exits the function
}
printf("Queue Elements are:\n"); // Displays a heading before showing queue elements
for(i = front; i <= rear; i++) // Traverses the queue from front to rear
{
printf("%d ", queue[i]); // Prints each element of the queue
}
}
int main() // Main function where program execution starts
{
display(); // Calls the display function to show queue elements
return 0; // Ends the program successfully
}
π Circular Queue (Important)
In normal queue:
[ X X X _ _ ]
Even after deletion, empty spaces may be wasted.
Circular Queue solves this by connecting:
Last Position → First Position
Visual:
Advantages:
Better memory usage
No space wastage
More efficient than simple queue
Very common placement question.
π Queue Using Linked List (Brief Intro)
Queue can also be implemented using:
Arrays
Linked Lists
In Linked List implementation:
Enqueue → Insert Node at Rear
Dequeue → Delete Node from Front
Advantages:
Dynamic size
No fixed limit
Better memory usage
This is very common in technical interviews.
π Difference Between Stack and Queue
This is one of the most repeated interview questions.
π Real-Life Applications of Queue
Queues are used in:
CPU scheduling
Printer management
Call center systems
Customer support systems
Ticket booking systems
Breadth First Search (BFS)
Network packet handling
Messaging systems
Task scheduling
Resource sharing systems
This makes queue one of the most practical data structures.
π‘ Practical Example: Printer Queue
When multiple users send print requests:
User A → User B → User C
The printer processes them in the same order.
This is called:
Printer Queue
This is one of the most famous queue applications.
Very common in interviews.
π‘ Practical Example: CPU Scheduling
Processes waiting for CPU execution are often managed using queue.
Example:
P1 → P2 → P3 → P4
The CPU processes them one by one in order.
This is a very strong real-world example.
π‘ Pro Tip for Interviews
Interviewers often ask:
Difference between Simple Queue and Circular Queue?
Difference between Stack and Queue?
What is Queue Overflow?
What is Queue Underflow?
Why Queue follows FIFO?
Can Queue be implemented using Linked List?
Prepare these answers properly.
These are highly repeated interview questions.
⚡ Time Complexity
This is very important for placements.
❌ Common Mistakes Beginners Make
1. Forgetting Overflow Condition
Wrong:
rear++;
queue[rear] = value;
Correct:
Always check:
if(rear == MAX - 1)
before enqueue.
2. Forgetting Underflow Condition
Always verify:
if(front == -1 || front > rear)
before dequeue.
This prevents runtime errors.
3. Wrong Initialization of front and rear
Correct:
int front = -1;
int rear = -1;
This is a very common beginner mistake.
π― Interview Questions
Q1. What is Queue?
A linear data structure that follows FIFO.
Q2. What is FIFO?
First In, First Out.
The first inserted element is removed first.
Q3. What is Queue Overflow?
When insertion is attempted in a full queue.
Q4. What is Queue Underflow?
When deletion is attempted from an empty queue.
Q5. What is Circular Queue?
A queue where the last position connects back to the first.
❓ Frequently Asked Questions (FAQs)
Is Queue important for placements?
Yes. Extremely important.
It is one of the most asked DSA topics.
Can Queue be implemented using Linked List?
Yes.
Queue can be implemented using both Arrays and Linked Lists.
Which comes after Queue?
Usually:
Linked List → Trees → Graphs
depending on syllabus.
Why is Circular Queue better?
Because it avoids memory wastage and improves efficiency.
π Conclusion
Queue is one of the most important foundational topics in DSA.
In this blog, we learned:
✔ What is Queue
✔ Why it is needed
✔ FIFO Principle
✔ Enqueue, Dequeue, Peek, Display
✔ Types of Queue
✔ Circular Queue
✔ Queue using Arrays
✔ Queue using Linked List
✔ Difference Between Stack and Queue
✔ Applications of Queue
✔ Time Complexity
✔ Common Mistakes
✔ Interview Questions
✔ FAQs
Mastering Queue makes Linked List, Trees, Graphs, and BFS much easier.
π Next Blog in This Series
Linked List in DSA – Introduction, Types & Programs
Stay connected with Learning Growth Hub for more professional programming, DSA, and project-based learning content.
π Keep Learning. Keep Coding. Keep Growing.
✨ Written by Krishna Popat
π± Founder – Learning Growth Hub
Comments
Post a Comment