Stack & Queue in C#
Table of Content:
Stack in C#
A Stack is a collection of items that follows the Last In First Out (LIFO) principle. In a stack, the last element added is the first one to be removed. Common operations for a stack are:
- Push: Add an item to the top of the stack.
- Pop: Remove the item from the top of the stack.
- Peek: View the top item without removing it.
Here’s an example of how to use a stack in C#:
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { // Create a stack of integers Stack stack = new Stack (); // Push elements to the stack stack.Push(10); stack.Push(20); stack.Push(30); // Peek at the top element Console.WriteLine("Top element is: " + stack.Peek()); // Pop elements from the stack Console.WriteLine("Popped element: " + stack.Pop()); Console.WriteLine("Popped element: " + stack.Pop()); // Check the remaining elements Console.WriteLine("Top element is: " + stack.Peek()); // Stack count after popping Console.WriteLine("Stack count: " + stack.Count); } }
Output:
Top element is: 30 Popped element: 30 Popped element: 20 Top element is: 10 Stack count: 1
Queue in C#
A Queue is a collection of items that follows the First In First Out (FIFO) principle. The first element added to the queue will be the first one to be removed. Common operations for a queue are:
- Enqueue: Add an item to the end of the queue.
- Dequeue: Remove the item from the front of the queue.
- Peek: View the front item without removing it.
Here’s an example of how to use a queue in C#:
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { // Create a queue of strings Queue queue = new Queue (); // Enqueue elements to the queue queue.Enqueue("Alice"); queue.Enqueue("Bob"); queue.Enqueue("Charlie"); // Peek at the front element Console.WriteLine("Front element is: " + queue.Peek()); // Dequeue elements from the queue Console.WriteLine("Dequeued element: " + queue.Dequeue()); Console.WriteLine("Dequeued element: " + queue.Dequeue()); // Check the remaining elements Console.WriteLine("Front element is: " + queue.Peek()); // Queue count after dequeuing Console.WriteLine("Queue count: " + queue.Count); } }
Output:
Front element is: Alice Dequeued element: Alice Dequeued element: Bob Front element is: Charlie Queue count: 1
Key Differences:
- Stack: Uses LIFO (Last In First Out) principle.
- Queue: Uses FIFO (First In First Out) principle.
Both structures are very useful depending on the problem you're trying to solve. A stack is good for scenarios like function calls or reversing items, while a queue is ideal for managing tasks in order or buffering data.