当前位置:首页 > PHP

php实现数据结构

2026-04-03 11:47:42PHP

PHP 实现常见数据结构的方法

PHP 作为一门灵活的脚本语言,可以通过数组、类和 SPL(标准 PHP 库)实现多种数据结构。以下是几种常见数据结构的实现方式:

数组实现栈(LIFO)

PHP 数组原生支持栈操作,使用 array_push()array_pop() 即可:

$stack = [];
array_push($stack, 'a'); // 入栈
$top = array_pop($stack); // 出栈

类实现队列(FIFO)

通过类封装数组实现先进先出队列:

class SimpleQueue {
    private $queue = [];

    public function enqueue($item) {
        array_push($this->queue, $item);
    }

    public function dequeue() {
        return array_shift($this->queue);
    }
}

SPL 双向链表

PHP 的 SPL 库提供 SplDoublyLinkedList

$list = new SplDoublyLinkedList();
$list->push('a'); // 尾部添加
$list->unshift('b'); // 头部添加
$list->pop(); // 尾部移除

哈希表实现

PHP 的关联数组本身就是哈希表的实现:

$hashMap = [];
$hashMap['key'] = 'value'; // 插入
$value = $hashMap['key'] ?? null; // 查找

二叉搜索树

通过类实现二叉树节点和基本操作:

class TreeNode {
    public $data;
    public $left = null;
    public $right = null;

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

// 插入示例
function insert($root, $data) {
    if ($root === null) return new TreeNode($data);
    if ($data < $root->data) {
        $root->left = insert($root->left, $data);
    } else {
        $root->right = insert($root->right, $data);
    }
    return $root;
}

优先队列

SPL 提供 SplPriorityQueue

$pq = new SplPriorityQueue();
$pq->insert('task1', 3);
$pq->insert('task2', 1);
$pq->extract(); // 返回优先级最高的'task1'

图结构

通过邻接表实现图:

php实现数据结构

class Graph {
    private $adjList = [];

    public function addEdge($src, $dest) {
        $this->adjList[$src][] = $dest;
        $this->adjList[$dest][] = $src; // 无向图需双向添加
    }
}

性能注意事项

  • 数组成员操作:array_shift() 时间复杂度为 O(n),不适合大规模队列
  • SPL 数据结构经过优化,适合处理大量数据
  • 复杂结构(如红黑树)建议使用第三方库如 PHPDS

以上实现方式可根据实际需求选择原生数组、类封装或 SPL 库,平衡开发效率与运行时性能。

标签: 数据结构php
分享给朋友:

相关文章

php实现分页

php实现分页

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

php实现打印功能

php实现打印功能

PHP 实现打印功能的方法 PHP 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaSc…

php实现图片上传

php实现图片上传

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

php 伪静态实现

php 伪静态实现

PHP 伪静态实现方法 伪静态(URL Rewrite)是一种通过服务器配置将动态URL转换为静态URL的技术,提升URL的可读性和SEO效果。以下是几种常见的实现方式: 使用Apache的mod_…

php实现短信验证

php实现短信验证

PHP实现短信验证的步骤 选择合适的短信服务提供商 国内常见的短信服务提供商包括阿里云短信、腾讯云短信、云片等。注册账号并获取API密钥和签名模板是第一步。这些平台通常提供详细的开发文档和SDK。…

php 实现md5

php 实现md5

使用 PHP 内置函数实现 MD5 PHP 提供了 md5() 函数,可以直接计算字符串的 MD5 哈希值。该函数接受一个字符串参数,返回 32 字符的十六进制哈希值。 $string = "H…