1. What Is a Queue?

Queue is a linear data structure that follows the principle:

FIFO – First In, First Out

So many people are already benefiting from this software development course

This means:

  • The first element added is the first one removed
  • Just like a real-life queue (bank line, food line)

Example (Real-Life Analogy)

Learn coding online

People in line:  A → B → C → D
Served first:    A

2. Basic Operations of a Queue

OperationDescription
enqueueAdd an element to the rear
dequeueRemove an element from the front
frontGet the front element
backGet the last element
isEmptyCheck if queue is empty
sizeNumber of elements

3. Queue in C++ (STL)

C++ provides the queue container in the Standard Template Library (STL).

Header File

#include <queue>

Declaration

queue<int> q;

4. Basic Queue Example

#include <iostream>
#include <queue>
using namespace std;

int main() {
    queue<int> q;

    q.push(10);   // enqueue
    q.push(20);
    q.push(30);

    cout << "Front: " << q.front() << endl; // 10
    cout << "Back: " << q.back() << endl;   // 30

    q.pop(); // dequeue

    cout << "Front after pop: " << q.front() << endl; // 20
    cout << "Size: " << q.size() << endl;

    return 0;
}

5. Queue Functions Explained

FunctionPurpose
push(x)Insert element at rear
pop()Remove front element
front()Access first element
back()Access last element
empty()Returns true if empty
size()Returns number of elements

6. Visual Representation

Queue (FIFO)

Front → [10] [20] [30] ← Rear

pop() removes 10

7. Internal Working of STL Queue

  • STL queue is implemented using:
    • deque (default)
    • Can also be implemented with list
queue<int, deque<int>> q;
queue<int, list<int>> q;

❗ You cannot access elements randomly (no indexing like arrays).

8. Types of Queues

1. Simple Queue

Basic FIFO structure.

2. Circular Queue

  • Rear connects back to front
  • Efficient memory usage
  • Used in CPU scheduling

3. Priority Queue

Elements served based on priority, not order.

#include <queue>

priority_queue<int> pq;
pq.push(10);
pq.push(50);
pq.push(20);

// Top = 50

Max Heap by default

4. Double-Ended Queue (Deque)

Insert/remove from both ends.

#include <deque>

deque<int> dq;
dq.push_front(10);
dq.push_back(20);

9. Implementing Queue Using Array (Manual)

#define SIZE 5
int arr[SIZE];
int front = -1, rear = -1;

Enqueue

void enqueue(int x) {
    if (rear == SIZE - 1)
        cout << "Queue Overflow";
    else {
        if (front == -1) front = 0;
        arr[++rear] = x;
    }
}

Dequeue

void dequeue() {
    if (front == -1 || front > rear)
        cout << "Queue Underflow";
    else
        front++;
}

10. Implementing Queue Using Linked List

  • Each node has:
    • data
    • next

Advantages:

  • Dynamic size
  • No overflow (until memory full)

11. Time & Space Complexity

OperationTime Complexity
EnqueueO(1)
DequeueO(1)
Front/BackO(1)

Space Complexity:

  • O(n)

12. Applications of Queue

✔ CPU Scheduling
✔ Breadth-First Search (BFS)
✔ Print Queue
✔ Call Center Systems
✔ Message Queues
✔ Order Processing Systems

13. Queue vs Stack

StackQueue
LIFOFIFO
Push/PopEnqueue/Dequeue
Used in recursionUsed in scheduling

14. Common Mistakes

❌ Accessing queue elements using index
❌ Calling front() on empty queue
❌ Forgetting #include <queue>

15. When to Use Queue?

Use a queue when:

  • Order of processing matters
  • Tasks must be handled sequentially
  • Fair scheduling is required

Summary

queue in C++ is:

  • A FIFO data structure
  • Provided by STL for efficiency
  • Essential for algorithms and system design

View Comments

  • Nice explanation of the basic operations. One thing worth adding is how the `empty()` function is often used to prevent errors when trying to dequeue from an empty queue. It’s a small detail, but it can really help prevent runtime issues in more complex programs.

Recent Posts

JavaScript Memoization

In JavaScript, it’s commonly used for: Recursive functions (like Fibonacci) Heavy calculations Repeated API/data processing…

3 weeks ago

CSS Container Queries: Responsive Design That Actually Makes Sense

For years, responsive design has depended almost entirely on media queries. We ask questions like: “If…

3 weeks ago

Cron Jobs & Task Scheduling

1. What is Task Scheduling? Task scheduling is the process of automatically running commands, scripts,…

3 weeks ago

Differences Between a Website and a Web App

Here’s a comprehensive, clear differentiation between a Website and a Web App, from purpose all the…

4 weeks ago

Essential VS Code Extensions Every Developer Should Use

Visual Studio Code (VS Code) is powerful out of the box, but its real strength…

1 month ago

JavaScript Variables

1. What Is a Variable in JavaScript? A variable is a named container used to store data…

1 month ago