Queues and stacks help us organize data in a specific order so we can add and remove items easily. They work like real-life lines or piles.
Queue and Stack behavior in C Sharp (C#)
using System; using System.Collections.Generic; public class QueueAndStackDemo { public static void Main() { // Queue example Queue<int> numberQueue = new Queue<int>(); numberQueue.Enqueue(1); // Add to end numberQueue.Enqueue(2); int firstInQueue = numberQueue.Dequeue(); // Remove from front // Stack example Stack<int> numberStack = new Stack<int>(); numberStack.Push(1); // Add to top numberStack.Push(2); int topOfStack = numberStack.Pop(); // Remove from top } }
Queue uses FIFO (First In First Out) order: first added is first removed.
Stack uses LIFO (Last In First Out) order: last added is first removed.
Queue<string> tasks = new Queue<string>(); tasks.Enqueue("Task1"); tasks.Enqueue("Task2"); string nextTask = tasks.Dequeue();
Stack<string> history = new Stack<string>(); history.Push("Page1"); history.Push("Page2"); string lastPage = history.Pop();
Queue<int> emptyQueue = new Queue<int>(); // Dequeue on empty queue throws InvalidOperationException
Stack<int> singleStack = new Stack<int>(); singleStack.Push(10); int onlyItem = singleStack.Pop();
This program shows how a queue and a stack work. It adds items, shows them, removes one, then shows the remaining items.
using System; using System.Collections.Generic; public class QueueAndStackBehavior { public static void Main() { // Create a queue and add items Queue<string> customerQueue = new Queue<string>(); customerQueue.Enqueue("Alice"); customerQueue.Enqueue("Bob"); customerQueue.Enqueue("Charlie"); Console.WriteLine("Queue before dequeue:"); foreach (string customer in customerQueue) { Console.WriteLine(customer); } // Remove one item from queue string servedCustomer = customerQueue.Dequeue(); Console.WriteLine($"\nServed customer: {servedCustomer}"); Console.WriteLine("Queue after dequeue:"); foreach (string customer in customerQueue) { Console.WriteLine(customer); } // Create a stack and add items Stack<string> bookStack = new Stack<string>(); bookStack.Push("Book1"); bookStack.Push("Book2"); bookStack.Push("Book3"); Console.WriteLine("\nStack before pop:"); foreach (string book in bookStack) { Console.WriteLine(book); } // Remove one item from stack string topBook = bookStack.Pop(); Console.WriteLine($"\nRemoved from stack: {topBook}"); Console.WriteLine("Stack after pop:"); foreach (string book in bookStack) { Console.WriteLine(book); } } }
Queue operations Enqueue and Dequeue run in O(1) time.
Stack operations Push and Pop run in O(1) time.
Trying to Dequeue or Pop from an empty collection throws an exception; always check if empty first.
Use Queue when order matters and you want to process oldest items first.
Use Stack when you want to reverse order or track recent items first.
Queue follows FIFO: first added, first removed.
Stack follows LIFO: last added, first removed.
Both are useful for organizing data in different real-life scenarios.