zoukankan      html  css  js  c++  java
  • PHP实现链表

    看了很久数据结构但是没有怎么用过,在网上看到了关于PHP的数据结构,学习了一下,与大家一起分享一下。

    简短不割                                                                                     

    class Hero
    {
        public $no;//排名
        public $name;//名字
        public $next=null;//$next是一个引用,指向另外一个Hero的对象实例
        
        public function __construct($no='',$name='')
        {
            $this->no=$no;
            $this->name=$name;
        }
        
        static public function showList($head)
        {
            $cur = $head;
            while($cur->next!=null)
            {
                echo "排名:".$cur->next->no.",名字:".$cur->next->name."<br>";
                $cur = $cur->next;
            }
        }
        //普通插入
        static public function addHero($head,$hero)
        {
            $cur = $head;
            while($cur->next!=null)
            {
                $cur = $cur->next;
            }
            $cur->next=$hero;
        }
        //有序的链表的插入  
        static public function addHeroSorted($head,$hero)
        {
            $cur = $head;
            $addNo = $hero->no;
            while($cur->next->no <= $addNo)
            {
                $cur = $cur->next;
            }
            /*$tep = new Hero();
            $tep = $cur->next;
            $cur->next = $hero;
            $hero->next =$tep;*/
            $hero->next=$cur->next;
            $cur->next=$hero;
        }
        
        static public function deleteHero($head,$no)
        {
            $cur = $head;
            while($cur->next->no != $no && $cur->next!= null)
            {
                $cur = $cur->next;
            }
            if($cur->next->no != null)
            {
                $cur->next = $cur->next->next;
                echo "删除成功<br>"; 
            }
            else
            {
                echo "没有找到<br>"; 
            }
        }
        
        static public function updateHero($head,$hero)
        {
            $cur = $head;
            while($cur->next->no != $hero->no && $cur->next!= null)
            {
                $cur = $cur->next;
            }
            if($cur->next->no != null)
            {
                $hero->next = $cur->next->next;
                $cur->next = $hero;
                echo "更改成功<br>"; 
            }
            else
            {
                echo "没有找到<br>"; 
            }
        }
    }
    
    //创建head头
    $head = new Hero();
    //第一个
    $hero = new Hero(1,'111');
    //连接
    $head->next = $hero;
    //第二个
    $hero2 = new Hero(3,'333');
    //连接
    Hero::addHero($head,$hero2);
    $hero3 = new Hero(2,'222');
    Hero::addHeroSorted($head,$hero3);
    //显示
    Hero::showlist($head);
    //删除
    Hero::deleteHero($head,4);
    //显示
    Hero::showlist($head);
    //更改
    $hero4=new Hero(2,'xxx');
    Hero::updateHero($head,$hero4);
    //显示
    Hero::showlist($head);

    我是天王盖地虎的分割线                                                                

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

    转载请注明出处:http://www.cnblogs.com/yydcdut

  • 相关阅读:
    base64是什么东东,base64 图片显示,在线编辑器
    中文字符 与 十六进制Unicode编码 相互转换
    全面理解Python中self的用法
    Python之使用元类MetaClass
    Python之MySQL数据库连接驱动aiomysql的使用
    Python实战网站开发:Day2编写Web App骨架
    Python实战网站开发:Day3编写ORM
    Python之MySQL数据库连接驱动pymysql的使用
    【CV基础】为什么一些深度学习的图像预处理使用mean=[0.485, 0.456, 0.406] and std=[0.229, 0.224, 0.225]来正则化?
    与人合作创业是一门大艺术(转)
  • 原文地址:https://www.cnblogs.com/yydcdut/p/3777760.html
Copyright © 2011-2022 走看看