php 实现堆栈实现
堆栈的基本概念
堆栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。主要操作包括压栈(push)和弹栈(pop),通常还会提供查看栈顶元素(peek)和判断栈是否为空(isEmpty)的功能。
使用数组实现堆栈
PHP的数组可以灵活模拟堆栈行为,通过array_push和array_pop函数直接操作:
class Stack {
private $stack;
private $size;
public function __construct() {
$this->stack = array();
$this->size = 0;
}
public function push($element) {
array_push($this->stack, $element);
$this->size++;
}
public function pop() {
if ($this->isEmpty()) {
return null;
}
$this->size--;
return array_pop($this->stack);
}
public function peek() {
if ($this->isEmpty()) {
return null;
}
return $this->stack[$this->size - 1];
}
public function isEmpty() {
return $this->size === 0;
}
public function size() {
return $this->size;
}
}
使用SplStack类实现
PHP标准库(SPL)提供了内置的SplStack类,可直接使用:
$stack = new SplStack();
$stack->push('a'); // 压栈
$stack->push('b');
echo $stack->pop(); // 输出 'b'
echo $stack->top(); // 查看栈顶元素 'a'
堆栈的典型应用场景
- 函数调用栈:程序执行时记录函数调用顺序
- 表达式求值:处理括号匹配、运算符优先级
- 撤销操作:记录操作历史实现回退功能
注意事项
- 数组实现的堆栈在元素量大时可能存在性能问题,
SplStack性能更优 - 弹栈操作前需检查栈是否为空,避免错误
- PHP数组本身可作为栈使用,但封装成类更符合OOP原则







