Letβs go through Queues and Stacks in C# β two fundamental data structures in programming.
π 1. Stack
A Stack is a Last-In, First-Out (LIFO) collection.
-
Last element added is the first to be removed
-
Common operations: Push, Pop, Peek
-
Part of
System.Collections.Generic
Example
using System;
using System.Collections.Generic;
Stack<int> stack = new Stack<int>();
// Add elements
stack.Push(10);
stack.Push(20);
stack.Push(30);
// Access top element without removing
Console.WriteLine(stack.Peek()); // 30
// Remove top element
Console.WriteLine(stack.Pop()); // 30
Console.WriteLine(stack.Pop()); // 20
// Remaining element
Console.WriteLine(stack.Peek()); // 10Key Methods
-
Push(item)β Add item to top -
Pop()β Remove and return top item -
Peek()β Return top item without removing -
Countβ Number of elements
π 2. Queue
A Queue is a First-In, First-Out (FIFO) collection.
-
First element added is the first to be removed
-
Common operations: Enqueue, Dequeue, Peek
-
Part of
System.Collections.Generic
Example
Queue<string> queue = new Queue<string>();
// Add elements
queue.Enqueue("Alice");
queue.Enqueue("Bob");
queue.Enqueue("Charlie");
// Access front element without removing
Console.WriteLine(queue.Peek()); // Alice
// Remove front element
Console.WriteLine(queue.Dequeue()); // Alice
Console.WriteLine(queue.Dequeue()); // Bob
// Remaining element
Console.WriteLine(queue.Peek()); // CharlieKey Methods
-
Enqueue(item)β Add item to end -
Dequeue()β Remove and return item from front -
Peek()β Return front item without removing -
Countβ Number of elements
π 3. Comparison Table
| Feature | Stack | Queue |
|---|---|---|
| Order | LIFO (Last In, First Out) | FIFO (First In, First Out) |
| Main Operations | Push, Pop, Peek | Enqueue, Dequeue, Peek |
| Use Case Example | Undo/Redo, Browser History | Print Queue, Task Scheduling |
β Tips
-
Use Stack for backtracking algorithms (undo, recursion, parsing)
-
Use Queue for processing tasks in order (FIFO scheduling, BFS in graphs)
-
Both are generic in C# and part of
System.Collections.Generic