Stacks and Queues
Stack Push/Pop
Push values onto a stack and pop them back in last-in, first-out order.
Algorithm
The replay uses the same three values in every language, so this PHP DSA implementation can be compared directly with the rest of the DSA track.
top
The top is the most recently pushed value.
LIFO
A stack removes values in last-in, first-out order.
Visual walkthrough
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.