Table of Contents

Queues

DotNet.AdvancedCollections provides advanced queue implementations.

PriorityQueue<T>

A priority queue where elements are dequeued according to their priority.

Features

  • Elements with higher priority are processed first
  • Efficient heap-based implementation
  • Generic support for any type

Usage Example

using DotNet.AdvancedCollections.Queue.PriorityQueue;

var queue = new PriorityQueue<string>();

// Enqueue with priorities
queue.Enqueue("Low priority task", 1);
queue.Enqueue("High priority task", 10);
queue.Enqueue("Medium priority task", 5);

// Dequeue (returns "High priority task")
var next = queue.Dequeue();

// Peek at the next item without dequeuing
var peek = queue.Peek();

// Check if empty
bool isEmpty = queue.IsEmpty;

// Get element count
int count = queue.Count;

Deque<T>

A double-ended queue that allows insertion and removal at both ends.

Features

  • O(1) operations at both ends
  • Can be used as a queue or stack
  • Efficient implementation

Usage Example

using DotNet.AdvancedCollections.Queue.Deque;

var deque = new Deque<int>();

// Add to front
deque.PushFirst(1);
deque.PushFirst(2);
deque.PushFirst(5);

// Add to back
deque.PushLast(10);

// Check count
Console.WriteLine($"Count: {deque.Count}");

// Iterate
foreach (var item in deque)
{
    Console.WriteLine(item);
}

// Remove from front (Dequeue)
var first = deque.Dequeue();

// Remove from back
var last = deque.PopLast();

// Peek at elements without removing
var peekFirst = deque.Peek();
var peekLast = deque.PeekLast();

Comparison

Operation PriorityQueue Deque
Enqueue O(log n) O(1)
Dequeue O(log n) O(1)
Peek O(1) O(1)
Order By priority FIFO/LIFO