当前位置:首页 > PHP

php 栈的实现

2026-02-15 17:08:44PHP

栈的基本概念

栈是一种遵循后进先出(LIFO)原则的数据结构,只允许在栈顶进行插入(push)和删除(pop)操作。栈的实现通常基于数组或链表。

基于数组的栈实现

使用数组实现栈时,需维护一个指针(或索引)指向栈顶元素。以下是PHP代码示例:

class Stack {
    private $stack;
    private $top;

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

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

    public function pop() {
        if ($this->isEmpty()) {
            return null;
        }
        $value = $this->stack[$this->top];
        unset($this->stack[$this->top]);
        $this->top--;
        return $value;
    }

    public function peek() {
        if ($this->isEmpty()) {
            return null;
        }
        return $this->stack[$this->top];
    }

    public function isEmpty() {
        return $this->top === -1;
    }

    public function size() {
        return $this->top + 1;
    }
}

基于链表的栈实现

链表实现的栈更灵活,动态分配内存。以下是PHP代码示例:

php  栈的实现

class Node {
    public $data;
    public $next;

    public function __construct($data) {
        $this->data = $data;
        $this->next = null;
    }
}

class LinkedListStack {
    private $top;

    public function __construct() {
        $this->top = null;
    }

    public function push($value) {
        $newNode = new Node($value);
        $newNode->next = $this->top;
        $this->top = $newNode;
    }

    public function pop() {
        if ($this->isEmpty()) {
            return null;
        }
        $value = $this->top->data;
        $this->top = $this->top->next;
        return $value;
    }

    public function peek() {
        if ($this->isEmpty()) {
            return null;
        }
        return $this->top->data;
    }

    public function isEmpty() {
        return $this->top === null;
    }
}

栈的常见操作

  • push($value):将元素压入栈顶。
  • pop():移除并返回栈顶元素。
  • peek():返回栈顶元素但不移除。
  • isEmpty():检查栈是否为空。
  • size():返回栈中元素数量(仅数组实现需要)。

注意事项

  • 数组实现的栈需注意数组越界问题。
  • 链表实现的栈需注意内存管理,避免内存泄漏。
  • PHP数组本身具备动态扩容特性,简化了数组实现的边界处理。

以上实现可根据实际需求扩展,例如添加异常处理或支持泛型数据。

标签: php
分享给朋友:

相关文章

php实现验证码

php实现验证码

PHP实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

php实现表单

php实现表单

PHP 表单基础实现 创建一个简单的 PHP 表单需要 HTML 表单结构和 PHP 处理脚本。以下是一个完整的示例: HTML 表单部分 (form.html) <form action=…

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $nam…

php实现注册

php实现注册

注册功能实现步骤 数据库准备 创建用户表,包含字段如id、username、password、email等。示例SQL: CREATE TABLE users ( id INT AUTO_I…

php实现聊天

php实现聊天

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

php 实现队列

php 实现队列

PHP 实现队列的方法 PHP 可以通过多种方式实现队列功能,以下是几种常见的实现方法: 使用数组实现队列 PHP 数组可以通过 array_push 和 array_shift 函数模拟队列的先进…