PHP小教程之实现双向链表
时间:2021-01-15 来源:互联网
看了很久数据结构但是没有怎么用过,在网上看到了关于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);
?>
以上就是PHP小教程之实现双向链表的全部内容,希望对你的学习有所帮助。
-
双王出征是什么梗?揭秘网络爆火的双王组合背后含义,点击了解真相! 2025-10-10
-
双王是什么梗?揭秘网络热词双王爆火原因,原来指王者荣耀两位顶级玩家! 2025-10-10
-
双血统猎梗指父母均为纯种犬的猎犬梗,强调血统纯正与优秀基因传承,深受宠物爱好者追捧。 2025-10-10
-
幻兽帕鲁小麦种子怎么获得-幻兽帕鲁小麦种子获取 2025-10-10
-
明日之后新直售时装第四维度登场-将携染色板同步上架 2025-10-10
-
燕云十六声全新外观寂夜铃明日登场-将会有限时优惠 2025-10-10