当前位置:首页 > PHP

php 实现栈

2026-02-28 15:40:08PHP

栈的基本概念

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

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

使用数组实现栈

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

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:基于双向链表实现,适合高频操作,但内存开销略大。

扩展功能

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

php 实现栈

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

标签: php
分享给朋友:

相关文章

php实现socket

php实现socket

PHP 实现 Socket 通信 PHP 可以通过 socket 扩展实现网络通信,支持 TCP/UDP 协议。以下是实现 Socket 通信的核心步骤和代码示例。 创建 TCP 服务器 //…

php长连接实现

php长连接实现

PHP 长连接实现方法 长连接(Keep-Alive)允许客户端与服务器在一次TCP连接中发送和接收多个HTTP请求/响应,减少重复建立连接的开销。以下是PHP中实现长连接的几种方式: 配置HTTP…

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Session 是…

php实现即时通讯

php实现即时通讯

PHP 实现即时通讯的方案 即时通讯(IM)可以通过多种方式实现,PHP 作为服务器端语言,通常需要结合前端技术(如 WebSocket、AJAX)或第三方服务来实现实时通信。以下是几种常见的实现方式…

php实现博客

php实现博客

使用PHP实现博客系统 数据库设计 创建数据库表存储博客文章和用户信息。常见的表包括posts(文章)和users(用户)。 CREATE TABLE users ( id INT AUTO…

php 无限分类的实现

php 无限分类的实现

无限分类的实现方法 无限分类通常用于构建树形结构数据,如商品分类、多级菜单等。以下是几种常见的实现方式: 邻接列表模型(Adjacency List) 邻接列表是最简单的实现方式,通过在每个节点中存…