zoukankan      html  css  js  c++  java
  • PHP之实现双向链表(代码篇)

    <?php
    /**
    * PHP之实现双向链表
    */
    class Hero{

    public $pre=null;
    public $no;
    public $name;
    public $next=null;

    public function __construct($no='',$name=''){
    $this->no=$no;
    $this->name=$name;
    }

    static public function addHero($head,$hero){
    $isExist=false;
    //判断目前这个链表是否为空
    if($head->next==null){
    $head->next=$hero;
    $hero->pre=$head;
    }else{
    //如果不是空链表,则按排名来添加
    //找到添加的位置
    while($head->next!=null){
    if($head->next->no > $hero->no){
    break;
    }elseif($head->next->no == $hero->no){
    $isExist=true;
    echo "<br>不能添加相同的编号";
    }else{
    $head=$head->next;
    }
    }
    if(!$isExist){
    if($head->next!=null){
    $hero->next=$head->next;
    $hero->next->pre=$hero;
    }
    $hero->pre=$head;
    $head->next=$hero;
    }
    }
    }

    //遍历
    static public function showHero($head){
    while($head->next!=null){
    echo "<br>编号:".$head->next->no."名字:".$head->next->name;
    $head=$head->next;
    }
    }

    static public function delHero($head,$herono){
    $isFind=false;
    while($head!=null){
    if($head->no==$herono){
    $isFind=true;
    break;
    }
    //继续找
    $head=$head->next;
    }
    if($isFind){
    if($head->next!=null){
    $head->next->pre=$head->pre;
    }
    $head->pre->next=$head->next;
    }else{
    echo "<br>没有找到目标";
    }
    }
    }

    $head = new Hero();
    $hero1 = new Hero(1,'1111');
    $hero3 = new Hero(3,'3333');
    $hero2 = new Hero(2,'2222');

    Hero::addHero($head,$hero1);
    Hero::addHero($head,$hero3);
    Hero::addHero($head,$hero2);
    Hero::showHero($head);

    Hero::delHero($head,2);
    Hero::showHero($head);
    exit;
  • 相关阅读:
    文件输出debug
    sweetalert
    js认清this的第一步
    Creating default object from empty value in PHP?
    matplotlib画图
    python解析库
    zabbix监控ssl证书过期时间
    aws 预留实例到期监控
    aws ec2挂载 s3
    aliyun挂载oss
  • 原文地址:https://www.cnblogs.com/datang6777/p/6992873.html
Copyright © 2011-2022 走看看