php实现栈
PHP实现栈的方法
在PHP中实现栈可以通过数组或SplStack类来完成。栈遵循后进先出(LIFO)原则,主要操作包括压栈(push)、弹栈(pop)、查看栈顶元素(peek)等。
使用数组实现栈
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的标准库中提供了SplStack类,它是双向链表的栈实现,使用起来更高效。
$stack = new SplStack();
$stack->push('a'); // 压栈
$stack->push('b');
$stack->push('c');
echo $stack->pop(); // 弹栈,输出 'c'
echo $stack->top(); // 查看栈顶元素,输出 'b'
栈的应用示例
栈常用于解决需要后进先出处理的场景,例如括号匹配、表达式求值等。
// 括号匹配示例
function isBalanced($str) {
$stack = new SplStack();
$pairs = [
')' => '(',
'}' => '{',
']' => '['
];
for ($i = 0; $i < strlen($str); $i++) {
$char = $str[$i];
if (in_array($char, ['(', '{', '['])) {
$stack->push($char);
} elseif (in_array($char, [')', '}', ']'])) {
if ($stack->isEmpty() || $stack->pop() != $pairs[$char]) {
return false;
}
}
}
return $stack->isEmpty();
}
以上方法展示了在PHP中实现栈的两种方式及其基本应用。根据具体需求选择数组实现或SplStack类实现。







