链表 最灵活的数据结构
链表是一个有序的列表,但是他在内存中时分散存储的,使用链表可以解决类似约瑟夫问题,排序,索引,广义表
<?php /** * Created by PhpStorm. * User: qixingyi * Date: 2015/5/15 * Time: 19:20 * 链表 最灵活的数据结构 * * * 链表是一个有序的列表,但是他在内存中时分散存储的,使用链表可以解决类似约瑟夫问题,排序,索引,广义表 */ /** * Class Hero 水浒英雄排行榜管理 */ class Hero { public $no; //英雄编号 public $name; public $nickname; public $next = null; public function __construct($no = '', $name = '', $nickname = '') { $this->no = $no; $this->name = $name; $this->nickname = $nickname; } } $head = new Hero(); /** * @param $head 好汉 * @param $hero 英雄 */ function addHero($head, $hero) { $cur = $head; $i=0; $flag = false; while ($cur->next != null) { if ($cur->next->no > $hero->no) { break; } else if ($cur->next->no == $hero->no) { $flag = true; echo '<br/><br/><b style="color: red">不能抢位置' . $hero->no . '</b><br/>位置已经有人了<br/>'; } $cur=$cur->next; } if($flag==false){ $hero->next=$cur->next; $cur->next=$hero; } } /** * @param $head 好汉 */ function showHeros($head){ $cur=$head; while($cur->next!=null){ echo $cur->next->no.' 号英雄: '.$cur->next->name.' 的外号是: '.$cur->next->nickname.'<br><br>'; $cur=$cur->next; } } /** * @param $head 好汉 * @param $hero 英雄 */ function updateHero($head,$hero){ $cur=$head; while($cur->next!=null){ if($cur->next->no==$hero->no){ //已找到 break; } $cur=$cur->next; } if($cur->next==null){//还是没找到 echo '<br><br><b style="color: red">XX 【'.$hero->hero->no.'】 英雄不存在~</b><br><br>'; } //ID不能改 $cur->next->name=$hero->name; $cur->next->nickname=$hero->nickname; echo '<br><br><b style="color: green">VV修改 【'.$cur->next->no.'】 号英雄资料成功</b><br><br>'; } function delHero($head,$hero_no){ $cur=$head; $flag=false; while($cur->next!=null){ if($cur->next->no==$hero_no){ //已找到 $flag=true; break; } $cur=$cur->next; } if($flag){ $cur->next=$cur->next->next; echo '<br><br><b style="color: green">VV已删除 【'.$hero_no.'】 号英雄</b><br><br>'; }else{ echo '<br><br><b style="color: red">XX 【'.$hero_no.'】 英雄不存在~</b><br><br>'; } } $hero=new Hero(1,'宋江','及时雨'); addHero($head,$hero); $hero=new Hero(4,'吴用','智多星'); addHero($head,$hero); $hero=new Hero(2,'武松','打虎英雄'); addHero($head,$hero); $hero=new Hero(3,'秦明','霹雳火'); addHero($head,$hero); $hero=new Hero(9,'林冲','豹子头'); addHero($head,$hero); echo '<br/><br/>*******************当前英雄的排行榜是*******************<br/><br/>'; showHeros($head); echo '<br/><br/>*******************修改后的英雄的排行榜是*******************<br/><br/>'; $hero=new Hero(2,'林冲的替身','狮子尾'); updateHero($head,$hero); showHeros($head); echo '<br/><br/>*******************删除后的英雄的排行榜是*******************<br/><br/>'; delHero($head,4); showHeros($head);
![](https://images0.cnblogs.com/blog2015/757881/201505/152119222825619.jpg)