php实现栈实现
栈的基本概念
栈是一种遵循后进先出(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基于链表实现,适合高频次操作场景。根据实际需求选择实现方式,数据量较小时差异不明显。







