• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

使用PHP实现单链表

php 搞代码 4年前 (2022-01-22) 23次浏览 已收录 0个评论

这篇文章主要介绍了关于使用PHP实现单链表 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

单链表顾名思义就是一个链式数据结构,它有一个表头,并且除了最后一个节点外,所有节点都有其后继节点。如下图。

首先,我们写出链表节点的类。单链表中的每一个节点,都保存其数据域和后驱指针

[php] view plain copy

  1. //链表节点   class node {       public $id; //节点id       public $name; //节点名称       public $next; //下一节点            public function __construct($id, $name) {           $this->id = $id;           $this->name = $name;           $this->next = null;       }   }

链表中还有两个特别重要的方法,插入和删除。插入需要找到插入的位置,把前一个元素的next指针指向被插入的节点,并将被插入节点的next指针指向后一个节点,如下图左侧所示。而删除则是把前一个节点的next指针指向后一个节点,并返回被删除元素的数据内容,如下图右侧所示。

[php] view plain copy

  1. //单链表   class singelLinkList {       private $header; //链表头节点            //构造方法       public function __construct($id = null, $name = null) {           $this->header = new node ( $id, $name, null );       }         //获取链表长度       public function getLinkLength() {           $i = 0;           $current = $this->header;           while ( $current->next != null ) {               $i ++;               $current = $current->next;           }           return $i;       }         //添加节点数据       public function addLink($node) {           $current = $this->header;           while ( $current->next != null ) {               if ($current->next->id > $node->id) {                   break;               }               $current = $current->next;           }           $node->next = $current->next;           $current->next = $node;       }         //删除链表节点       public function delLink($id) {           $current = $this->header;           $flag = false;           while ( $current->next != null ) {               if ($current->next->id == $id) {                   $flag = true;                   break;               }               $current = $current->next;           }           if ($flag) {               $current->next = $current->next->next;           } else {               echo "未找到id=" . $id . "的节点!<br>";           }       }        //判断连表是否为空      public function isEmpty(){              return $this->header == null;      }        //清空链表      public function clear(){              $this->header = null;      }         //获取链表       public function getLinkList() {           $current = $this->header;           if ($current->next == null) {               echo ("链表为空!");               return;           }           while ( $current->next != null ) {               echo 'id:' . $current->next->id . '   name:' . $current->next->name . "<br>";               if ($current->next->next == null) {                   break;               }               $current = $current->next;           }       }         //获取节点名字       public function getLin<strong>2本文来源gaodaima#com搞(代@码$网6</strong><pre>搞gaodaima代码

    kNameById($id) { $current = $this->header; if ($current->next == null) { echo "链表为空!"; return; } while ( $current->next != null ) { if ($current->id == $id) { break; } $current = $current->next; } return $current->name; } //更新节点名称 public function updateLink($id, $name) { $current = $this->header; if ($current->next == null) { echo "链表为空!"; return; } while ( $current->next != null ) { if ($current->id == $id) { break; } $current = $current->next; } return $current->name = $name; } } $lists = new singelLinkList (); $lists->addLink ( new node ( 5, 'eeeeee' ) ); $lists->addLink ( new node ( 1, 'aaaaaa' ) ); $lists->addLink ( new node ( 6, 'ffffff' ) ); $lists->addLink ( new node ( 4, 'dddddd' ) ); $lists->addLink ( new node ( 3, 'cccccc' ) ); $lists->addLink ( new node ( 2, 'bbbbbb' ) ); $lists->getLinkList (); echo "<br>———–删除节点————–<br>"; $lists->delLink ( 5 ); $lists->getLinkList (); echo "<br>———–更新节点名称————–<br>"; $lists->updateLink ( 3, "222222" ); $lists->getLinkList (); echo "<br>———–获取节点名称————–<br>"; echo $lists->getLinkNameById ( 5 ); echo "<br>———–获取链表长度————–<br>"; echo $lists->getLinkLength ();

相关推荐:

使用php来解析实现二级域名重定向

以上就是使用PHP实现单链表的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用PHP实现单链表

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址