博客
关于我
php实现单链表
阅读量:793 次
发布时间:2023-03-01

本文共 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

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

转载地址:http://ystfk.baihongyu.com/

你可能感兴趣的文章
php基础配置环境变量
查看>>
php增删改查封装方法
查看>>
springboot之jar包Linux后台启动部署及滚动日志查看且日志输出至文件保存(超级详细)
查看>>
php多条件筛选功能的实现
查看>>
php多线程
查看>>
PHP大数组循环-避免产生Notice或者是Warning
查看>>
PHP大数组过滤元素、修改元素性能分析
查看>>
PHP大文件切片下载代码
查看>>
PHP如何下载远程文件到指定目录
查看>>
php如何优化压缩的图片
查看>>
php如何做表格,新手怎么制作表格
查看>>
RabbitMQ高级特性
查看>>
php如何定义的数位置,php如何实现不借助IDE快速定位行数或者方法定义的文件和位置...
查看>>
RabbitMQ集群 - 普通集群搭建、宕机情况
查看>>
php如何正确的获得文件的后缀名
查看>>
PHP如何生成唯一的数字ID
查看>>
PHP如何获取当前页面的最后修改时间
查看>>
PHP如何读取json数据
查看>>
PHP字符串
查看>>
PHP字符串递增
查看>>