zl程序教程

您现在的位置是:首页 >  后端

当前栏目

PHP小教程之实现链表

2023-06-13 09:15:27 时间

看了很久数据结构但是没有怎么用过,在网上看到了关于PHP的数据结构,学习了一下,与大家一起分享一下。

复制代码代码如下:


classHero
{
   public$no;//排名
   public$name;//名字
   public$next=null;//$next是一个引用,指向另外一个Hero的对象实例

   publicfunction__construct($no="",$name="")
   {
       $this->no=$no;
       $this->name=$name;
   }

   staticpublicfunctionshowList($head)
   {
       $cur=$head;
       while($cur->next!=null)
       {
           echo"排名:".$cur->next->no.",名字:".$cur->next->name."<br>";
           $cur=$cur->next;
       }
   }
   //普通插入
   staticpublicfunctionaddHero($head,$hero)
   {
       $cur=$head;
       while($cur->next!=null)
       {
           $cur=$cur->next;
       }
       $cur->next=$hero;
   }
   //有序的链表的插入 
   staticpublicfunctionaddHeroSorted($head,$hero)
   {
       $cur=$head;
       $addNo=$hero->no;
       while($cur->next->no<=$addNo)
       {
           $cur=$cur->next;
       }
       /*$tep=newHero();
       $tep=$cur->next;
       $cur->next=$hero;
       $hero->next=$tep;*/
       $hero->next=$cur->next;
       $cur->next=$hero;
   }

   staticpublicfunctiondeleteHero($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>";
       }
   }

   staticpublicfunctionupdateHero($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=newHero();
//第一个
$hero=newHero(1,"111");
//连接
$head->next=$hero;
//第二个
$hero2=newHero(3,"333");
//连接
Hero::addHero($head,$hero2);
$hero3=newHero(2,"222");
Hero::addHeroSorted($head,$hero3);
//显示
Hero::showlist($head);
//删除
Hero::deleteHero($head,4);
//显示
Hero::showlist($head);
//更改
$hero4=newHero(2,"xxx");
Hero::updateHero($head,$hero4);
//显示
Hero::showlist($head);

有序的插入的话需要遍历一遍链表,链表的一些知识就不介绍了哈。这里主要分享一下代码。