PHP小教程之实现链表
程序员文章站
2023-12-12 20:20:58
看了很久数据结构但是没有怎么用过,在网上看到了关于php的数据结构,学习了一下,与大家一起分享一下。
复制代码 代码如下:class hero{ &...
看了很久数据结构但是没有怎么用过,在网上看到了关于php的数据结构,学习了一下,与大家一起分享一下。
复制代码 代码如下:
class hero
{
public $no;//排名
public $name;//名字
public $next=null;//$next是一个引用,指向另外一个hero的对象实例
public function __construct($no='',$name='')
{
$this->no=$no;
$this->name=$name;
}
static public function showlist($head)
{
$cur = $head;
while($cur->next!=null)
{
echo "排名:".$cur->next->no.",名字:".$cur->next->name."<br>";
$cur = $cur->next;
}
}
//普通插入
static public function addhero($head,$hero)
{
$cur = $head;
while($cur->next!=null)
{
$cur = $cur->next;
}
$cur->next=$hero;
}
//有序的链表的插入
static public function addherosorted($head,$hero)
{
$cur = $head;
$addno = $hero->no;
while($cur->next->no <= $addno)
{
$cur = $cur->next;
}
/*$tep = new hero();
$tep = $cur->next;
$cur->next = $hero;
$hero->next =$tep;*/
$hero->next=$cur->next;
$cur->next=$hero;
}
static public function deletehero($head,$no)
{
$cur = $head;
while($cur->next->no != $no && $cur->next!= null)
{
$cur = $cur->next;
}
if($cur->next->no != null)
{
$cur->next = $cur->next->next;
echo "删除成功<br>";
}
else
{
echo "没有找到<br>";
}
}
static public function updatehero($head,$hero)
{
$cur = $head;
while($cur->next->no != $hero->no && $cur->next!= null)
{
$cur = $cur->next;
}
if($cur->next->no != null)
{
$hero->next = $cur->next->next;
$cur->next = $hero;
echo "更改成功<br>";
}
else
{
echo "没有找到<br>";
}
}
}
//创建head头
$head = new hero();
//第一个
$hero = new hero(1,'111');
//连接
$head->next = $hero;
//第二个
$hero2 = new hero(3,'333');
//连接
hero::addhero($head,$hero2);
$hero3 = new hero(2,'222');
hero::addherosorted($head,$hero3);
//显示
hero::showlist($head);
//删除
hero::deletehero($head,4);
//显示
hero::showlist($head);
//更改
$hero4=new hero(2,'xxx');
hero::updatehero($head,$hero4);
//显示
hero::showlist($head);
有序的插入的话需要遍历一遍链表,链表的一些知识就不介绍了哈。这里主要分享一下代码。