php实现单链表
发布日期:2025-05-04 08:34:16 浏览次数:7 分类:精选文章

本文共 2333 字,大约阅读时间需要 7 分钟。

单链表是最简单的链表表示方式。在线性表中,每个数据元素占用一个结点(node),一个结点通常由两个域组成:一个存储数据元素data,另一个存储指向链表中下一个结点的指针link。最后一个结点的指针为空。单链表的数据元素之间的逻辑关系由指针表示,虽然指针指向的存储位置不要求紧邻,但数据元素的逻辑关系依然清晰。

在PHP中,我们可以通过类来模拟单链表实现。以下是一个简单的实现示例:

节点类

class Node {    private $data;    private $next;    public function setData($value) {        $this->data = $value;    }    public function setNext($value) {        $this->next = $value;    }    public function getData() {        return $this->data;    }    public function getNext() {        return $this->next;    }    public function __construct($data, $next) {        $this->setData($data);        $this->setNext($next);    }}

功能类

class LinkList {    private $header; // 头节点    private $size; // 节点数    public function getSize() {        return $this->size;    }    public function getHeader() {        return $this->header;    }    public function __construct() {        // 设置默认内容类型        header("content-type:text/html; charset=utf-8");        $this->header = new Node(null, null);        $this->size = 0;    }    // 添加节点    public function add($data) {        $node = $this->header;        while ($node->getNext() != null) {            $node = $node->getNext();        }        $node->setNext(new Node($data, null));        $this->size++;    }    // 移除节点    public function removeAt($data) {        $node = $this->header;        while ($node->getData() != $data) {            $node = $node->getNext();        }        if ($node->getData() != $data) {            echo("查无此节点!");            return;        }        $node->setNext($node->getNext());        $node->setData($node->getNext()->getData());        $this->size--;    }    // 遍历节点    public function get() {        $node = $this->header;        if ($node->getNext() == null) {            echo("数据集为空!");            return;        }        while ($node->getNext() != null) {            echo($node->getNext()->getData());            if (($node->getNext()->getNext() == null) || ($node->getNext()->getNext()->getNext() == null)) {                break;            }            $node = $node->getNext();            echo "=> ";        }    }    // 其他方法(如获取特定节点、更新节点等,可根据需求添加)}

示例使用

$s = new LinkList();$s->add('ssss');echo $s->getSize(); // 输出1$s->add('fff');$s->update('ddd', 'ssssd');echo $s->getSize(); // 输出2$s->get(); // 输出:ssss => fff => ssssd

这种实现方式通过类的封装性质,使链表的操作更加简洁和可维护。

上一篇:php实现图片背景换色功能
下一篇:php实现下载文件方法

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2026年05月23日 08时34分02秒