php 链表如何实现

php链表的实现方法:首先创建PHP示例文件;然后初始化头节点;接着设置某位置节点的数据,并在某位置处插入节点;最后实现删除某位置的节点即可。

php 链表如何实现

推荐:《PHP视频教程》 

链表

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。

使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。

链表有很多种不同的类型:单向链表,双向链表以及循环链表。

立即学习“PHP免费学习笔记(深入)”;

单向链表

链表中最简单的一种是单向链表,它包含两个域,一个信息域和一个指针域。这个链接指向列表中的下一个节点,而最后一个节点则指向一个空值。

php 链表如何实现

PHP实现简单的单向链表

Data = $data;        $this->Next = $next;    }    public function __set($name, $value)    {        if (isset($this->$name))            $this->$name = $value;    }    public function __get($name)    {        if (isset($this->$name))            return $this->$name;        else            return NULL;    }}class LinkList{    private $head;//头节点    private $len;    /**     * 初始化头节点     */    public function __construct()    {        $this->init();    }    public function setHead(Node $val)    {        $this->head = $val;    }    public function getHead()    {        return $this->head;    }    public function getLen()    {        return $this->len;    }    public function init()    {        $this->setHead(new Node(NULL, NULL));        $this->len = 0;    }    /**     * 设置某位置节点的数据     * @param int $index     * @param $data     * @return bool     */    public function set(int $index, $data)    {        $i = 1;        $node = $this->getHead();        while ($node->Next !== NULL && $i Next;            $i++;        }        $node->Data = $data;        return TRUE;    }    /**     * 获取某位置节点的数据     * @param int $index     * @return mixed     */    public function get(int $index)    {        $i = 1;        $node = $this->getHead();        while ($node->Next !== NULL && $i Next;            $i++;        }        return $node->Data;    }    /**     * 在某位置处插入节点     * @param $data     * @param int $index     * @return bool     */    public function insert($data, int $index = 0)    {        if ($index  $this->getLen())            return FALSE;        $i = 1;        $node = $this->getHead();        while ($node->Next !== NULL) {            if ($index === $i) break;            $node = $node->Next;            $i++;        }        $node->Next = new Node($data, $node->Next);        $this->len++;        return TRUE;    }    /**     * 删除某位置的节点     * @param int $index     * @return bool     */    public function delete(int $index)    {        if ($index  $this->getLen())            return FALSE;        $i = 1;        $node = $this->getHead();        while ($node->Next !== NULL) {            if ($index === $i) break;            $node = $node->Next;            $i++;        }        $node->Next = $node->Next->Next;        $this->len--;        return TRUE;    }}

登录后复制

双向链表一种更复杂的链表是“双向链表”或“双面链表”。每个节点有两个连接:一个指向前一个节点,(当此“连接”为第一个“连接”时,指向空值或者空列表);而另一个指向下一个节点,(当此“连接”为最后一个“连接”时,指向空值或者空列表)

php 链表如何实现

循环链表在一个 循环链表中,首节点和末节点被连接在一起。这种方式在单向和双向链表中皆可实现。要转换一个循环链表,你开始于任意一个节点然后沿着列表的任一方向直到返回开始的节点。再来看另一种方法,循环链表可以被视为“无头无尾”。这种列表很利于节约数据存储缓存,假定你在一个列表中有一个对象并且希望所有其他对象迭代在一个非特殊的排列下。指向整个列表的指针可以被称作访问指针。

php 链表如何实现

基本思路都差不多有时间继续更新

.markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:15px;overflow-x:hidden;color:#333}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{line-height:1.5;margin-top:35px;margin-bottom:10px;padding-bottom:5px}.markdown-body h1{font-size:30px;margin-bottom:5px}.markdown-body h2{padding-bottom:12px;font-size:24px;border-bottom:1px solid #ececec}.markdown-body h3{font-size:18px;padding-bottom:0}.markdown-body h4{font-size:16px}.markdown-body h5{font-size:15px}.markdown-body h6{margin-top:5px}.markdown-body p{line-height:inherit;margin-top:22px;margin-bottom:22px}.markdown-body img{max-width:100%}.markdown-body hr{border:none;border-top:1px solid #ddd;margin-top:32px;margin-bottom:32px}.markdown-body code{word-break:break-word;border-radius:2px;overflow-x:auto;background-color:#fff5f5;color:#ff502c;font-size:.87em;padding:.065em .4em}.markdown-body code,.markdown-body pre{font-family:Menlo,Monaco,Consolas,Courier New,monospace}.markdown-body pre{overflow:auto;position:relative;line-height:1.75}.markdown-body pre>code{font-size:12px;padding:15px 12px;margin:0;word-break:normal;display:block;overflow-x:auto;color:#333;background:#f8f8f8}.markdown-body a{text-decoration:none;color:#0269c8;border-bottom:1px solid #d1e9ff}.markdown-body a:active,.markdown-body a:hover{color:#275b8c}.markdown-body table{display:inline-block!important;font-size:12px;width:auto;max-width:100%;overflow:auto;border:1px solid #f6f6f6}.markdown-body thead{background:#f6f6f6;color:#000;text-align:left}.markdown-body tr:nth-child(2n){background-color:#fcfcfc}.markdown-body td,.markdown-body th{padding:12px 7px;line-height:24px}.markdown-body td{min-width:120px}.markdown-body blockquote{color:#666;padding:1px 23px;margin:22px 0;border-left:4px solid #cbcbcb;background-color:#f8f8f8}.markdown-body blockquote:after{display:block;content:””}.markdown-body blockquote>p{margin:10px 0}.markdown-body ol,.markdown-body ul{padding-left:28px}.markdown-body ol li,.markdown-body ul li{margin-bottom:0;list-style:inherit}.markdown-body ol li .task-list-item,.markdown-body ul li .task-list-item{list-style:none}.markdown-body ol li .task-list-item ol,.markdown-body ol li .task-list-item ul,.markdown-body ul li .task-list-item ol,.markdown-body ul li .task-list-item ul{margin-top:0}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:3px}.markdown-body ol li{padding-left:6px}@media (max-width:720px){.markdown-body h1{font-size:24px}.markdown-body h2{font-size:20px}.markdown-body h3{font-size:18px}}

以上就是php 链表如何实现的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2119896.html

(0)
上一篇 2025年2月24日 18:28:31
下一篇 2025年2月24日 18:28:46

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • php ip如何转数字

    php ip转数字的方法:1、用PHP函数ip2long函数与sprintf函数结合进行转换;2、通过“gmp_strval(gmp_init($ipv6long,2),10);”方法进行转换。 推荐:《PHP视频教程》  PHP中将ip转…

    2025年2月24日
    200
  • php 字符如何转十六进制

    php字符转十六进制的方法:首先创建一个PHP示例文件;然后通过“function strToHex($string){…}”方法将字符串转十六进制即可。 推荐:《PHP视频教程》  php 字符转十六进制 代码函数如下: fu…

    2025年2月24日
    200
  • nginx 不解析php怎么办

    nginx不解析php的解决办法:首先找到nginx的配置文件;然后去掉相应的注释;接着重启nginx,访问页面;最后重新安装php5-fpm,并再次访问即可。 推荐:《PHP视频教程》  Nginx无法解析php文件 0x00:问题描述 …

    2025年2月24日
    200
  • php pdo扩展安装方法

    php pdo扩展安装方法:首先解压php安装包,进入pdo组件目录;然后安装pdo;接着安装PDO_MYSQL组件;最后编辑php配置文件php.ini即可。 推荐:《PHP视频教程》  PHP安装pdo扩展 本文只针对通过编译方式安装的…

    2025年2月24日
    200
  • php如何实现几秒后跳转

    php实现几秒后跳转的方法:首先创建一个PHP示例文件;然后通过“header(“refresh:5;url=http://www.XXXXX.com”);”方式实现几秒后跳转即可。 推荐:《PHP视频教程》  方法…

    2025年2月24日
    200
  • php post中文乱码如何解决

    php post中文乱码的解决办法:首先打开相应的PHP代码文件;然后在代码中添加语句为“”即可。 推荐:《PHP视频教程》  PHP $_POST 提交表单中文乱码问题 在代码中加入 echo ”; 登录后复制 以上就是php post…

    2025年2月24日
    200
  • 如何解决substr php 乱码问题

    php substr函数出现乱码是因为中文UTF-8编码,每个汉字占3字节,而GB2312占2字节,英文占1字节,截取位数不准确导致乱码,其解决办法就是使用mb_substr函数即可。 推荐:《PHP视频教程》  php 解决截取字符串乱码…

    2025年2月24日
    200
  • php 如何替换多个字符

    php替换多个字符的方法:首先创建一个PHP示例文件;然后通过“str_replace($vowels, “”,”Hello World of PHP”);”方法替换多个字符串即可。 推荐:《…

    2025年2月24日
    200
  • php utf8如何转unicode

    php utf8转unicode的方法:首先创建一个PHP示例文件;然后通过“iconv($encoding, ‘UCS-2BE’, $str);”方法实现转换即可。 推荐:《PHP视频教程》 linux下php中文…

    2025年2月24日 编程技术
    200
  • php 防sql注入方法

    php防sql注入的方法:1、使用mysql_real_escape_string方法转义SQL语句中使用的字符串中的特殊字符;2、打开magic_quotes_gpc来防止SQL注入;3、通过自定义函数防sql注入。 推荐:《PHP视频教…

    2025年2月24日
    200

发表回复

登录后才能评论