php单链表实现

时间:2021-05-17 20:29:19

php单链表实现

<?php
//单链表
class Hero{
public $no;
public $name;
public $nickname;
public $next=null; function __construct($no='',$name=''){
$this->no=$no;
$this->name=$name;
} }
function addHero($head,$Hero){
$cur=$head;
$flag=true;
while ($cur->next!=null) {
if($cur->next->no>$Hero->no){
$tmp=$cur->next;
$cur->next=$Hero;
$Hero->next=$tmp;
$flag=false;break;
}else if($cur->next->no==$Hero->no){echo "该位置已有人,不允许占位";$flag=false;break;}
else{ $cur=$cur->next;}
}
if($flag){$cur->next=$Hero;}
}
//增加
function showHero($head){
$cur=$head;
while($cur->next!=null){ echo $cur->next->no.":".$cur->next->name."<br/>";
$cur=$cur->next;
} }
//删除特定编号的
function delHero($head,$no){
$cur=$head;
while($cur->next!=null){
if($cur->next->no==$no)
{if($cur->next->next)$cur->next=$cur->next->next;
else $cur->next=null;
break;
}
$cur=$cur->next;
} }
//查找特定编号的信息
function findHero($head,$no){
$cur=$head;
while($cur->next!=null){
if($cur->next->no==$no){break;}
$cur=$cur->next;
}
echo$cur->next->name; }
//改特定编号的信息
function updateHero($head,$no,$name){
$cur=$head;
while($cur->next!=null){
if($cur->next->no==$no){break;}
$cur=$cur->next;
}
$cur->next->name=$name;
}
$head=new Hero();
$Hero=new Hero(1,"宋江");
addHero($head,$Hero);
$Hero=new Hero(6,"林冲");
addHero($head,$Hero);
$Hero=new Hero(2,"吴用");
addHero($head,$Hero);
$Hero=new Hero(4,"李逵");
addHero($head,$Hero);
showHero($head);
//删除4号
delHero($Hero,4);
//查找6号
findHero($head,6);
// 修改6号
updateHero($Hero,6,"林哥哥");
showHero($head); ?>