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.php
<?php
function render_values(array $values): string { return implode(" -> ", $values); }
$stack = [];
foreach ([10, 20, 30] as $value) { $stack[] = $value; }
$popped = [];
while (count($stack) > 0) { $popped[] = array_pop($stack); }
echo render_values($popped) . PHP_EOL;
Complexity
- Time: O(1) per push/pop
- Space: O(n)
Implementation notes
$stack = []starts as an empty PHP array, and the trace records that empty stack before any pushes.- The push loop is
foreach ([10, 20, 30] as $value) { $stack[] = $value; }, so each value appends to the top end of the array. - After the pushes, the replayed stack state is
[10, 20, 30], with30at the pop end. $popped = []stores the values in removal order.- The pop loop runs while
count($stack) > 0and uses$popped[] = array_pop($stack). array_pop($stack)removes and returns the last array value, so the first pop returns30and leaves[10, 20].- The remaining pops return
20and then10, ending with$popped = [30, 20, 10]and$stack = []. render_values($popped)joins the LIFO order with" -> ", andecho ... . PHP_EOLprints30 -> 20 -> 10.
top
The top is the most recently pushed value.
LIFO
A stack removes values in last-in, first-out order.