当前位置:首页 > PHP

php 实现堆栈实现

2026-02-28 05:28:12PHP

堆栈的基本概念

堆栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。主要操作包括压栈(push)和弹栈(pop),通常还会提供查看栈顶元素(peek)和判断栈是否为空(isEmpty)的方法。

使用数组实现堆栈

PHP的数组可以动态调整大小,非常适合用来实现堆栈。以下是一个简单的堆栈实现示例:

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

使用链表实现堆栈

链表也可以用来实现堆栈,适合需要更灵活内存管理的场景。以下是链表实现的示例:

php 实现堆栈实现

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的数组操作经过高度优化。链表实现可能在特定场景下更有优势,例如需要频繁动态调整大小的情况。

实际应用场景

堆栈在编程中有广泛的应用,例如:

  • 函数调用栈
  • 表达式求值
  • 括号匹配检查
  • 回溯算法

以上实现提供了堆栈的基本功能,可以根据实际需求进行扩展。

标签: 堆栈php
分享给朋友:

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用原生PHP实现分页功能需要结合数据库查询和HTML展示。以下是核心实现步骤: 数据库查询与分页逻辑 // 连接数据库 $conn = new mysqli('loca…

php实现验证码

php实现验证码

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

php实现图片上传

php实现图片上传

实现图片上传的基本步骤 创建HTML表单用于文件上传,表单需设置enctype="multipart/form-data"属性,确保文件数据正确传输。 <form action="upload…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

php怎么实现登录功能

php怎么实现登录功能

数据库准备 创建用户表存储登录信息,通常包括用户名、密码(需加密)等字段。示例SQL: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY…