当前位置:首页 > PHP

php 实现链表

2026-01-15 12:22:27PHP

PHP 实现链表的方法

链表是一种线性数据结构,由节点组成,每个节点包含数据和指向下一个节点的指针。PHP 中可以通过类和对象来实现链表。

定义链表节点类

创建一个 ListNode 类,用于表示链表的节点。每个节点包含 datanext 属性。

php 实现链表

class ListNode {
    public $data = null;
    public $next = null;

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

定义链表类

创建一个 LinkedList 类,用于管理链表操作。包含 head 属性表示链表的头部节点。

class LinkedList {
    public $head = null;

    // 插入节点到链表尾部
    public function insert($data) {
        $newNode = new ListNode($data);
        if ($this->head === null) {
            $this->head = $newNode;
        } else {
            $current = $this->head;
            while ($current->next !== null) {
                $current = $current->next;
            }
            $current->next = $newNode;
        }
    }

    // 删除指定数据的节点
    public function delete($data) {
        if ($this->head === null) {
            return;
        }
        if ($this->head->data === $data) {
            $this->head = $this->head->next;
            return;
        }
        $current = $this->head;
        while ($current->next !== null) {
            if ($current->next->data === $data) {
                $current->next = $current->next->next;
                return;
            }
            $current = $current->next;
        }
    }

    // 查找节点
    public function search($data) {
        $current = $this->head;
        while ($current !== null) {
            if ($current->data === $data) {
                return true;
            }
            $current = $current->next;
        }
        return false;
    }

    // 打印链表
    public function display() {
        $current = $this->head;
        while ($current !== null) {
            echo $current->data . " -> ";
            $current = $current->next;
        }
        echo "NULL\n";
    }
}

使用链表

创建一个链表实例,并执行插入、删除、查找和打印操作。

php 实现链表

$list = new LinkedList();
$list->insert(10);
$list->insert(20);
$list->insert(30);
$list->display(); // 输出: 10 -> 20 -> 30 -> NULL

$list->delete(20);
$list->display(); // 输出: 10 -> 30 -> NULL

echo $list->search(30) ? "Found\n" : "Not found\n"; // 输出: Found

实现链表反转

LinkedList 类中添加反转链表的方法。

public function reverse() {
    $prev = null;
    $current = $this->head;
    while ($current !== null) {
        $next = $current->next;
        $current->next = $prev;
        $prev = $current;
        $current = $next;
    }
    $this->head = $prev;
}

调用反转方法后打印链表:

$list->reverse();
$list->display(); // 输出: 30 -> 10 -> NULL

链表的时间复杂度

  • 插入操作:O(n)(需要遍历到链表尾部)
  • 删除操作:O(n)(需要遍历找到目标节点)
  • 查找操作:O(n)(需要遍历链表)
  • 反转操作:O(n)(需要遍历整个链表)

通过以上方法,可以在 PHP 中实现链表的基本操作。链表适用于动态数据管理,插入和删除操作效率较高。

标签: 链表php
分享给朋友:

相关文章

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Ratc…

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERVER…

php实现mvc

php实现mvc

PHP 实现 MVC 架构 MVC(Model-View-Controller)是一种常用的软件设计模式,将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller…

php实现推送消息推送消息

php实现推送消息推送消息

PHP 实现消息推送的方法 使用 WebSocket 实现实时推送 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,适合实现实时消息推送。 安装 Ratchet 库(WebSo…

php实现支付宝支付

php实现支付宝支付

支付宝支付集成步骤 准备工作 在开始集成支付宝支付前,确保已注册支付宝开放平台账号并完成企业实名认证。创建应用后获取APPID、应用私钥和支付宝公钥。 配置支付宝SDK 通过Composer安装支付…

php 实现文档预览

php 实现文档预览

PHP 实现文档预览的方法 在 PHP 中实现文档预览功能通常涉及将文档转换为可预览的格式(如 PDF、HTML 或图片)。以下是几种常见的方法: 使用第三方库转换文档为 PDF 通过调用外部库或工…