PHP小教程之实现链表

  看了很久数据结构但是没有怎么用过,在网上看到了关于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);

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