Queues

A queue is a First-In, First-Out (FIFO) data structure. The first element added is the first one removed — like a line at a store.

Core Operations

Operation Description Time
Enqueue Add to back O(1)
Dequeue Remove from front O(1)
Peek View front without removing O(1)

Queue in C

var queue = new Queue<string>();

queue.Enqueue("Task A");
queue.Enqueue("Task B");
queue.Enqueue("Task C");

Console.WriteLine(queue.Peek());    // "Task A"
Console.WriteLine(queue.Dequeue()); // "Task A"
Console.WriteLine(queue.Dequeue()); // "Task B"
Console.WriteLine(queue.Count);     // 1

Example: Simple Task Processor

var tasks = new Queue<string>();
tasks.Enqueue("Send email");
tasks.Enqueue("Generate report");
tasks.Enqueue("Backup database");

while (tasks.Count > 0)
{
    string task = tasks.Dequeue();
    Console.WriteLine($"Processing: {task}");
}

PriorityQueue (C# 10+)

PriorityQueue<TElement, TPriority> dequeues elements by priority (lower number = higher priority):

var pq = new PriorityQueue<string, int>();

pq.Enqueue("Low priority task", 10);
pq.Enqueue("Critical fix", 1);
pq.Enqueue("Normal task", 5);

while (pq.Count > 0)
{
    Console.WriteLine(pq.Dequeue());
}
// Output: Critical fix, Normal task, Low priority task

Common Use Cases

  • Task scheduling — process jobs in order
  • BFS traversal — explore graph nodes level by level
  • Message queues — async communication between services
  • Print spooler — documents printed in submission order