当前位置:首页 > PHP教程 > php应用 > 列表

PHP小教程之实现链表

发布:smiling 来源: PHP粉丝网  添加日期:2021-02-10 14:29:30 浏览: 评论:0 

php中没有链表这种数据结构,可以通过数组来实现,看了很久数据结构但是没有怎么用过,在网上看到了关于PHP的数据结构,学习了一下,与大家一起分享一下,代码如下:

  1. class Hero 
  2.     public $no;//排名 
  3.     public $name;//名字 
  4.     public $next=null;//$next是一个引用,指向另外一个Hero的对象实例 
  5.  
  6.     public function __construct($no='',$name=''
  7.     { 
  8.         $this->no=$no
  9.         $this->name=$name
  10.     } 
  11.  
  12.     static public function showList($head
  13.     { 
  14.         $cur = $head
  15.         while($cur->next!=null) 
  16.         { 
  17.             echo "排名:".$cur->next->no.",名字:".$cur->next->name."<br>"
  18.             $cur = $cur->next; 
  19.         } 
  20.     } 
  21.     //普通插入 
  22.     static public function addHero($head,$hero
  23.     { 
  24.         $cur = $head
  25.         while($cur->next!=null) 
  26.         { 
  27.             $cur = $cur->next; 
  28.         } 
  29.         $cur->next=$hero
  30.     } 
  31.     //有序的链表的插入  
  32.     static public function addHeroSorted($head,$hero
  33.     { 
  34.         $cur = $head
  35.         $addNo = $hero->no; 
  36.         while($cur->next->no <= $addNo
  37.         { 
  38.             $cur = $cur->next; 
  39.         } 
  40.         /*$tep = new Hero(); 
  41.         $tep = $cur->next; 
  42.         $cur->next = $hero; 
  43.         $hero->next =$tep;*/ 
  44.         $hero->next=$cur->next; 
  45.         $cur->next=$hero
  46.     } 
  47.  
  48.     static public function deleteHero($head,$no
  49.     { 
  50.         $cur = $head
  51.         while($cur->next->no != $no && $cur->next!= null) 
  52.         { 
  53.             $cur = $cur->next; 
  54.         } 
  55.         if($cur->next->no != null) 
  56.         { 
  57.             $cur->next = $cur->next->next; 
  58.             echo "删除成功<br>"
  59.         } 
  60.         else 
  61.         { 
  62.             echo "没有找到<br>"
  63.         } 
  64.     } 
  65.  
  66.     static public function updateHero($head,$hero
  67.     { 
  68.         $cur = $head
  69.         while($cur->next->no != $hero->no && $cur->next!= null) 
  70.         { 
  71.             $cur = $cur->next; 
  72.         } 
  73.         if($cur->next->no != null) 
  74.         { 
  75.             $hero->next = $cur->next->next; 
  76.             $cur->next = $hero
  77.             echo "更改成功<br>"
  78.         } 
  79.         else 
  80.         { 
  81.             echo "没有找到<br>"
  82.         } 
  83.     } 
  84. //创建head头 
  85. $head = new Hero(); 
  86. //第一个 
  87. $hero = new Hero(1,'111'); 
  88. //连接 
  89. $head->next = $hero
  90. //第二个 
  91. $hero2 = new Hero(3,'333'); 
  92. //连接 
  93. Hero::addHero($head,$hero2); 
  94. $hero3 = new Hero(2,'222'); 
  95. Hero::addHeroSorted($head,$hero3); 
  96. //显示 
  97. Hero::showlist($head); 
  98. //删除 
  99. Hero::deleteHero($head,4); 
  100. //显示 
  101. Hero::showlist($head); 
  102. //更改 
  103. $hero4=new Hero(2,'xxx'); 
  104. Hero::updateHero($head,$hero4); 
  105. //显示 
  106. Hero::showlist($head); 

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

Tags: PHP链表

分享到: