Stacks and Queues
Stack Push/Pop
Push values onto a stack and pop them back in last-in, first-out order.
Algorithm
Basic Implementation
basic.cs
using System;
using System.Collections.Generic;
using System.Linq;
class Program {
static string Render(List<int> values) => string.Join(" -> ", values);
static void Main() {
var stack = new Stack<int>();
foreach (var value in new[] {10, 20, 30}) stack.Push(value);
var popped = new List<int>();
while (stack.Count > 0) popped.Add(stack.Pop());
Console.WriteLine(Render(popped));
}
}
Complexity
- Time: O(1) per push/pop
- Space: O(n)
Implementation notes
Stack<int>is the BCL LIFO container;Pushappends to managed backing storage that grows as needed and is reclaimed by GC.Pop()would throw on an empty stack, so the implementation guards removal withstack.Count > 0.- The popped values go into a
List<int>only for deterministic rendering; the important state is the stack top changing across the grouped push and pop phases.
top
The top is the most recently pushed value.
LIFO
A stack removes values in last-in, first-out order.