php 实现堆栈实现
堆栈的基本概念
堆栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。主要操作包括压栈(push)和弹栈(pop),通常还会提供查看栈顶元素(peek)和判断栈是否为空(isEmpty)的方法。
使用数组实现堆栈
PHP的数组可以动态调整大小,非常适合用来实现堆栈。以下是一个简单的堆栈实现示例:

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()) {
throw new RuntimeException("Stack is empty");
}
$this->size--;
return array_pop($this->stack);
}
public function peek() {
if ($this->isEmpty()) {
throw new RuntimeException("Stack is empty");
}
return $this->stack[$this->size - 1];
}
public function isEmpty() {
return $this->size === 0;
}
public function size() {
return $this->size;
}
}
堆栈的使用示例
创建堆栈实例并进行操作:
$stack = new Stack();
$stack->push(10);
$stack->push(20);
$stack->push(30);
echo $stack->pop(); // 输出 30
echo $stack->peek(); // 输出 20
echo $stack->size(); // 输出 2
使用链表实现堆栈
链表也可以用来实现堆栈,适合需要更灵活内存管理的场景。以下是链表实现的示例:

class Node {
public $data;
public $next;
public function __construct($data) {
$this->data = $data;
$this->next = null;
}
}
class LinkedListStack {
private $top;
private $size;
public function __construct() {
$this->top = null;
$this->size = 0;
}
public function push($element) {
$newNode = new Node($element);
$newNode->next = $this->top;
$this->top = $newNode;
$this->size++;
}
public function pop() {
if ($this->isEmpty()) {
throw new RuntimeException("Stack is empty");
}
$data = $this->top->data;
$this->top = $this->top->next;
$this->size--;
return $data;
}
public function peek() {
if ($this->isEmpty()) {
throw new RuntimeException("Stack is empty");
}
return $this->top->data;
}
public function isEmpty() {
return $this->top === null;
}
public function size() {
return $this->size;
}
}
性能考虑
数组实现的堆栈在PHP中通常更高效,因为PHP的数组操作经过高度优化。链表实现可能在特定场景下更有优势,例如需要频繁动态调整大小的情况。
实际应用场景
堆栈在编程中有广泛的应用,例如:
- 函数调用栈
- 表达式求值
- 括号匹配检查
- 回溯算法
以上实现提供了堆栈的基本功能,可以根据实际需求进行扩展。






