当前位置:首页 > PHP

php 实现栈

2026-02-28 15:40:08PHP

栈的基本概念

栈是一种遵循后进先出(LIFO)原则的数据结构,核心操作包括:

php 实现栈

  • push:将元素压入栈顶。
  • pop:移除并返回栈顶元素。
  • peek:返回栈顶元素但不移除。
  • isEmpty:检查栈是否为空。

使用数组实现栈

PHP 数组天然支持栈操作,通过 array_pusharray_pop 函数即可实现:

php 实现栈

class Stack {
    private $stack = [];

    // 压入元素
    public function push($item) {
        array_push($this->stack, $item);
    }

    // 弹出元素
    public function pop() {
        if ($this->isEmpty()) {
            throw new RuntimeException("Stack is empty");
        }
        return array_pop($this->stack);
    }

    // 查看栈顶元素
    public function peek() {
        if ($this->isEmpty()) {
            throw new RuntimeException("Stack is empty");
        }
        return end($this->stack);
    }

    // 检查是否为空
    public function isEmpty() {
        return empty($this->stack);
    }
}

// 示例用法
$stack = new Stack();
$stack->push(1);
$stack->push(2);
echo $stack->pop(); // 输出 2
echo $stack->peek(); // 输出 1

使用 SplStack 类

PHP 标准库(SPL)提供了内置的 SplStack 类,直接实现栈功能:

$stack = new SplStack();
$stack->push(1);
$stack->push(2);
echo $stack->pop(); // 输出 2
echo $stack->top(); // 输出 1(等效于 peek)

性能注意事项

  • 数组实现:适合简单场景,但频繁动态扩容可能影响性能。
  • SplStack:基于双向链表实现,适合高频操作,但内存开销略大。

扩展功能

如需限制栈大小或添加其他逻辑(如遍历),可在自定义类中扩展:

public function isFull($maxSize) {
    return count($this->stack) >= $maxSize;
}

标签: php
分享给朋友:

相关文章

php实现聊天

php实现聊天

实现 PHP 聊天功能的方法 使用 WebSocket 和 PHP 实现实时聊天 WebSocket 是一种全双工通信协议,适合实现实时聊天功能。PHP 可以通过 Ratchet 库实现 WebSo…

php 实现下载

php 实现下载

PHP 实现文件下载的方法 使用 PHP 实现文件下载可以通过设置 HTTP 头信息,强制浏览器将文件作为附件下载而非直接打开。 基本下载实现 $file_path = 'path/to/your/…

php mvc实现

php mvc实现

PHP MVC 实现步骤 模型(Model)层 模型负责数据处理和业务逻辑,通常与数据库交互。创建一个基类模型,其他具体模型继承它。 class Model { protected $db;…

php 购物车实现session

php 购物车实现session

PHP 购物车实现(基于 Session) 在 PHP 中,使用 Session 实现购物车功能是一种常见方法。Session 可以跨页面存储用户数据,适合临时保存购物车信息。 初始化 Sessio…

php实现多态

php实现多态

多态的概念 多态是面向对象编程的三大特性之一,指同一个方法在不同类中有不同实现方式。PHP通过继承和接口实现多态。 通过继承实现多态 父类定义方法,子类重写该方法实现不同行为: class Ani…

php 实现聊天功能

php 实现聊天功能

PHP 实现聊天功能的方法 使用 WebSocket 和 Ratchet 库 WebSocket 是实现实时聊天的理想选择。Ratchet 是一个 PHP 库,用于处理 WebSocket 连接。…