当前位置:首页 > PHP

数组 实现堆栈 php

2026-03-13 09:01:12PHP

使用数组实现堆栈(Stack)的 PHP 示例

堆栈是一种遵循后进先出(LIFO)原则的数据结构,可以通过 PHP 数组轻松实现。以下是几种核心操作的方法:

初始化堆栈

使用空数组表示堆栈:

数组 实现堆栈 php

$stack = array();

压入元素(Push)

使用 array_push() 函数或直接赋值:

数组 实现堆栈 php

array_push($stack, 'item1');
$stack[] = 'item2'; // 更高效的写法

弹出元素(Pop)

使用 array_pop() 移除并返回顶部元素:

$topItem = array_pop($stack);

查看顶部元素(Peek)

不修改堆栈的情况下获取顶部元素:

$topItem = end($stack);

检查堆栈是否为空

$isEmpty = empty($stack);

获取堆栈大小

$size = count($stack);

完整示例代码

class Stack {
    private $stack;

    public function __construct() {
        $this->stack = array();
    }

    public function push($item) {
        $this->stack[] = $item;
    }

    public function pop() {
        if ($this->isEmpty()) {
            return null;
        }
        return array_pop($this->stack);
    }

    public function peek() {
        return end($this->stack);
    }

    public function isEmpty() {
        return empty($this->stack);
    }

    public function size() {
        return count($this->stack);
    }
}

// 使用示例
$stack = new Stack();
$stack->push(10);
$stack->push(20);
echo $stack->pop(); // 输出20
echo $stack->peek(); // 输出10

注意事项

  • PHP 数组本身已经提供了动态扩容功能,无需手动处理容量问题
  • array_push() 比直接赋值性能略差,推荐使用 $array[] = $value 语法
  • 堆栈操作的时间复杂度均为 O(1)

标签: 堆栈数组
分享给朋友:

相关文章

react如何创建数组

react如何创建数组

创建数组的方法 在React中创建数组与普通JavaScript相同,可以使用多种方式。以下是常见的几种方法: 使用数组字面量 const array = [1, 2, 3, 4]; 使用Arra…

vue实现数组排序

vue实现数组排序

vue实现数组排序的方法 在Vue中实现数组排序主要依赖JavaScript的数组排序方法,结合Vue的响应式特性确保视图同步更新。以下是几种常见实现方式: 使用JavaScript原生sort方法…

vue实现数组倒叙

vue实现数组倒叙

实现数组倒序的方法 在Vue中实现数组倒序可以通过多种方式完成,以下是几种常见的方法: 使用JavaScript的reverse()方法 // 在data中定义数组 data() { retu…

vue怎样实现数组绑定

vue怎样实现数组绑定

Vue 实现数组绑定的方法 Vue 提供了多种方式来实现数组的绑定,以下是常见的几种方法: 使用 v-for 指令绑定数组 通过 v-for 指令可以遍历数组并渲染列表。语法如下: <ul&…

vue数组监听怎么实现

vue数组监听怎么实现

监听数组变化的方法 在Vue中,由于JavaScript的限制,直接通过索引修改数组或修改数组长度时,Vue无法自动检测这些变化。需要采用特定方法来实现数组的响应式更新。 使用Vue.set或thi…

原生加数组实现vue

原生加数组实现vue

使用原生 JavaScript 和数组实现 Vue 的核心功能 Vue 的核心功能包括数据响应式、模板渲染和指令绑定。通过原生 JavaScript 和数组可以模拟部分功能,以下是一个简化版的实现方式…