• PHP算法每日一练 双向链表


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

    源代码下载:DoubleLine_1202.zip

  • 相关阅读:
    centos 下PATH变量配置错误补救办法 Alex
    基于php模块方式安装LAMP和常见LAMP应用 Alex
    php配置 Alex
    php测试小代码 Alex
    PHP简介 Alex
    2.7.JavaScriptnull与undefined
    2.9.JavaScript内置对象
    2.8.JavaScript不同数据类型转换
    2.2.javascript变量作用域
    2.6.Javascript数值型
  • 原文地址:https://www.cnblogs.com/linzhenjie/p/2798890.html
Copyright © 2020-2023  润新知