1 <?php 2 /**单向链表 -- 水浒传英雄排行版*/ 3 class hero{ 4 public $name = ''; 5 public $no =''; 6 public $cname = ''; 7 public $next = ''; 8 public function __construct($no = '',$name='',$cname=''){ 9 $this->no = $no; 10 $this->name = $name; 11 $this->cname = $cname; 12 } 13 //显示英雄链表 14 public static function showHero($head){ 15 $cur = $head; 16 while($cur->next != null){ 17 echo '英雄编号:'.$cur->next->no.' '; 18 echo '英雄姓名:'.$cur->next->name.' '; 19 echo '英雄昵称:'.$cur->next->cname.' '; 20 echo '<br />'; 21 $cur = $cur->next; 22 } 23 echo '<hr />'; 24 } 25 //英雄加到链表末端 26 public static function addHero($head,$hero){ 27 $cur = $head; 28 while($cur->next != null){ 29 $cur = $cur->next; 30 } 31 $cur->next = $hero; 32 } 33 //英雄按排序加入 34 public static function addHero2($head,$hero){ 35 $cur = $head; 36 while($cur->next != null){ 37 if($cur->next->no > $hero->no){ 38 break; 39 } 40 $cur = $cur->next; 41 } 42 $hero->next = $cur->next; 43 $cur->next = $hero; 44 } 45 //修改英雄 46 public static function editHero($head,$hero){ 47 $cur = $head; 48 while($cur->next != null){ 49 if($cur->next == $hero){ 50 break; 51 } 52 $cur = $cur->next; 53 } 54 $cur->next->name = $hero->name; 55 $cur->next->cname = $hero->cname; 56 } 57 //删除英雄 58 public static function delHero($head,$hero){ 59 $cur = $head; 60 while($cur->next != null){ 61 if($cur->next == $hero){ 62 break; 63 } 64 $cur = $cur->next; 65 } 66 $cur->next = $hero->next; 67 $hero->next = null; 68 } 69 } 70 71 $head = new hero(); 72 $songjiang =new hero(1,'宋江','及时雨'); 73 $lujunyi =new hero(2,'卢俊义','玉麒麟'); 74 75 $head->next = $songjiang; 76 $songjiang->next = $lujunyi; 77 78 //默认 79 hero::showHero($head); 80 //加入到链表末端 81 $linchong = new hero(6,'林冲','豹子头'); 82 hero::addHero($head,$linchong); 83 hero::showHero($head); 84 //按排名加入链表 85 $wuyong = new hero(3,'吴用','智多星'); 86 hero::addHero2($head,$wuyong); 87 hero::showHero($head); 88 //修改英雄 89 $wuyong->name='吴用2'; 90 hero::editHero($head,$wuyong); 91 hero::showHero($head); 92 //删除英雄 93 hero::delHero($head,$wuyong); 94 hero::showHero($head); 95 96 ?>
源代码下载:SingleLine_1202.zip