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