Tag Archives: double ended queue

๐Ÿ“˜ Queues in Computer Science


๐Ÿงฉ What is a Queue?

Image
Image
Image

A queue is a fundamental linear data structure that follows the principle of FIFO (First In, First Out). This means that the first element added to the queue is the first one to be removed.

Think of a queue like a line of people waiting at a ticket counter:

  • The person who arrives first gets served first.
  • New people join at the end of the line.

In programming terms, a queue allows insertion at one end (rear) and deletion at the other end (front).


๐Ÿง  Key Characteristics of Queues

๐Ÿ”น 1. FIFO Principle

The defining rule of a queue is First In, First Out.

๐Ÿ”น 2. Two Ends

  • Front โ†’ where elements are removed
  • Rear โ†’ where elements are added

๐Ÿ”น 3. Sequential Access

Elements are processed in order.

๐Ÿ”น 4. Dynamic or Static Implementation

Queues can be implemented using:

  • Arrays
  • Linked lists

๐Ÿงฑ Basic Structure of a Queue

Image
Image
Image
Image

A queue consists of:

  • Front pointer
  • Rear pointer
  • Collection of elements

Example:

Front โ†’ [10][20][30] โ† Rear

โš™๏ธ Core Queue Operations


๐Ÿ”น 1. Enqueue (Insertion)

Image
Image
Image
Image

Adds an element at the rear.

queue.append(10)

๐Ÿ”น 2. Dequeue (Deletion)

Image
Image
Image

Removes an element from the front.

queue.pop(0)

๐Ÿ”น 3. Peek (Front Element)

queue[0]

Returns the front element without removing it.


๐Ÿ”น 4. isEmpty Operation

len(queue) == 0

๐Ÿ”น 5. isFull Operation (Array-based Queue)

Checks whether the queue has reached its maximum capacity.


๐Ÿงฎ Types of Queues


๐Ÿ”น 1. Simple Queue (Linear Queue)

Image
Image
Image
Image

Basic FIFO queue.


๐Ÿ”น 2. Circular Queue

Image
Image
Image

In a circular queue, the last position is connected to the first, forming a circle.


๐Ÿ”น 3. Priority Queue

Image
Image
Image

Elements are served based on priority, not order.


๐Ÿ”น 4. Deque (Double-Ended Queue)

Image
Image
Image
Image

Insertion and deletion at both ends.


๐Ÿ”น 5. Input-Restricted Queue

Image
Image
Image

Insertion allowed only at one end.


๐Ÿ”น 6. Output-Restricted Queue

Image
Image
Image

Deletion allowed only at one end.


โš ๏ธ Queue Conditions


๐Ÿ”ด Overflow

Image
Image
Image

Occurs when inserting into a full queue.


๐Ÿ”ต Underflow

Image
Image
Image
Image

Occurs when deleting from an empty queue.


๐Ÿง‘โ€๐Ÿ’ป Queue Implementation


๐Ÿ”น 1. Using Arrays

class Queue:
    def __init__(self):
        self.queue = []

    def enqueue(self, data):
        self.queue.append(data)

    def dequeue(self):
        if self.is_empty():
            return "Underflow"
        return self.queue.pop(0)

    def peek(self):
        return self.queue[0]

    def is_empty(self):
        return len(self.queue) == 0

๐Ÿ”น 2. Using Linked Lists

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

class Queue:
    def __init__(self):
        self.front = None
        self.rear = None

    def enqueue(self, data):
        new_node = Node(data)
        if self.rear is None:
            self.front = self.rear = new_node
            return
        self.rear.next = new_node
        self.rear = new_node

    def dequeue(self):
        if self.front is None:
            return "Underflow"
        temp = self.front
        self.front = self.front.next
        return temp.data

๐Ÿงฎ Time Complexity of Queue Operations

OperationTime Complexity
EnqueueO(1)
DequeueO(1)
PeekO(1)
SearchO(n)

โšก Advantages of Queues

  • Maintains order of elements
  • Efficient for scheduling
  • Useful in real-time systems
  • Easy to implement

โš ๏ธ Disadvantages of Queues

  • Limited access (no random access)
  • Fixed size (in array implementation)
  • Inefficient shifting (in simple arrays)

๐Ÿง  Advanced Queue Concepts


๐Ÿ”น 1. Heap-Based Priority Queue

Image
Image
Image
Image

Uses heaps for efficient priority handling.


๐Ÿ”น 2. Double-Ended Queue (Deque)

Supports operations at both ends.


๐Ÿ”น 3. Blocking Queue

Image
Image
Image
Image

Used in multithreading.


๐Ÿ”น 4. Message Queues

Image
Image
Image

Used in distributed systems.


๐Ÿ”ฌ Applications of Queues


๐Ÿ–จ๏ธ 1. CPU Scheduling

Image
Image
Image
Image

Processes are scheduled using queues.


๐ŸŒ 2. Network Packet Handling

Image
Image
Image
Image

Packets are processed in order.


๐ŸŽฎ 3. Game Development

Image
Image
Image
Image

Event handling systems.


๐Ÿงพ 4. Printer Queue

Image
Image
Image
Image

Jobs processed in order.


๐Ÿงฎ 5. Breadth First Search (BFS)

Image
Image
Image
Image

Used in graph traversal.


๐Ÿ” Queue vs Stack

FeatureQueueStack
PrincipleFIFOLIFO
InsertionRearTop
DeletionFrontTop

๐Ÿงช Memory Representation

Array-Based:

Front โ†’ [10, 20, 30] โ† Rear

Linked List-Based:

Front โ†’ [10] โ†’ [20] โ†’ [30] โ† Rear

๐Ÿš€ Real-World Importance

Queues are essential in:

  • Operating systems
  • Networking
  • Real-time systems
  • Simulation systems
  • Distributed computing

๐Ÿงพ Conclusion

Queues are an essential data structure that ensures fair and orderly processing of data. Their FIFO nature makes them ideal for scheduling, buffering, and real-time processing systems.

Understanding queues is crucial for mastering algorithms, system design, and real-world problem solving.


๐Ÿท๏ธ Tags