PHP小教程之实现双向链表
发布:smiling 来源: PHP粉丝网 添加日期:2021-02-11 10:47:18 浏览: 评论:0
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。
看了很久数据结构但是没有怎么用过,在网上看到了关于PHP的数据结构,学习了一下,与大家一起分享一下。上一次分享了《PHP小教程之实现链表》,这次来补充说一下双向链表,代码如下:
- <?php
- class Hero
- {
- public $pre=null;
- public $no;
- public $name;
- public $next=null;
- public function __construct($no='',$name='')
- {
- $this->no=$no;
- $this->name=$name;
- }
- static public function addHero($head,$hero)
- {
- $cur = $head;
- $isExist=false;
- //判断目前这个链表是否为空
- if($cur->next==null)
- {
- $cur->next=$hero;
- $hero->pre=$cur;
- }
- else
- {
- //如果不是空节点,则安排名来添加
- //找到添加的位置
- while($cur->next!=null)
- {
- if($cur->next->no > $hero->no)
- {
- break;
- }
- else if($cur->next->no == $hero->no)
- {
- $isExist=true;
- echo "<br>不能添加相同的编号";
- }
- $cur=$cur->next;
- }
- if(!$isExist)
- {
- if($cur->next!=null)
- {
- $hero->next=$cur->next;
- }
- $hero->pre=$cur;
- if($cur->next!=null)
- {
- $hero->next->pre=$hero;
- }
- $cur->next=$hero;
- }
- }
- }
- //遍历
- static public function showHero($head)
- {
- $cur=$head;
- while($cur->next!=null)
- {
- echo "<br>编号:".$cur->next->no."名字:".$cur->next->name;
- $cur=$cur->next;
- }
- }
- static public function delHero($head,$herono)
- {
- $cur=$head;
- $isFind=false;
- while($cur!=null)
- {
- if($cur->no==$herono)
- {
- $isFind=true;
- break;
- }
- //继续找
- $cur=$cur->next;
- }
- if($isFind)
- {
- if($cur->next!=null)
- {
- $cur->next_pre=$cur->pre;
- }
- $cur->pre->next=$cur->next;
- }
- else
- {
- echo "<br>没有找到目标";
- }
- }
- }
- $head = new Hero();
- $hero1 = new Hero(1,'1111');
- $hero3 = new Hero(3,'3333');
- $hero2 = new Hero(2,'2222');
- Hero::addHero($head,$hero1);
- Hero::addHero($head,$hero3);
- Hero::addHero($head,$hero2);
- Hero::showHero($head);
- Hero::delHero($head,2);
- Hero::showHero($head);
- ?>
Tags: PHP双向链表
相关文章
- ·PHP双向链表定义与用法示例(2021-09-01)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)