Stack & Queue in C#

Rumman Ansari   Software Engineer   2024-09-30 02:27:49   Share
Subject Syllabus DetailsSubject Details
☰ TContent
☰Fullscreen

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<int> stack = new Stack<int>();

        // 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<string> queue = new Queue<string>();

        // 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.