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)
            {
                $cur = $head;
                $isExist=false;
                //判断目前这个链表是否为空
                if($cur->next==null)
                {
                    $cur->next=$hero;
                    $hero->pre=$cur;
                }
                else
                {
                    //如果不是空节点,则安排名来添加
                    //找到添加的位置
                    while($cur->next!=null)
                    {
                        if($cur->next->no > $hero->no)
                        {
                            break;
                        }
                        else if($cur->next->no == $hero->no)
                        {
                            $isExist=true;
                            echo "<br>不能添加相同的编号";
                        }
                        $cur=$cur->next;
                    }
                    if(!$isExist)
                    {
                        if($cur->next!=null)
                        {
                            $hero->next=$cur->next;
                        }
                        $hero->pre=$cur;
                        if($cur->next!=null)
                        {
                            $hero->next->pre=$hero;
                        }
                        $cur->next=$hero;                    
                    }
                }
            }
            //遍历
            static public function showHero($head)
            {
                $cur=$head;
                while($cur->next!=null)
                {
                    echo "<br>编号:".$cur->next->no."名字:".$cur->next->name;
                    $cur=$cur->next;
                }
            }
            static public function delHero($head,$herono)
            {
                $cur=$head;
                $isFind=false;
                while($cur!=null)
                {
                    if($cur->no==$herono)
                    {
                        $isFind=true;
                        break;
                    }
                    //继续找
                    $cur=$cur->next;
                }
                if($isFind)
                {
                    if($cur->next!=null)
                    {
                        $cur->next_pre=$cur->pre;
                    }
                    $cur->pre->next=$cur->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);
?>

时间: 2024-09-20 00:06:46

PHP小教程之实现双向链表的相关文章

PHP小教程之实现双向链表_php实例

看了很久数据结构但是没有怎么用过,在网上看到了关于PHP的数据结构,学习了一下,与大家一起分享一下.上一次分享了<PHP小教程之实现链表>,这次来补充说一下双向链表. 复制代码 代码如下: <?php        class Hero        {            public $pre=null;            public $no;            public $name;            public $next=null;           

三个实用背景小教程

  插画师整理的三个实用背景小教程:<动漫云彩的画法>.<关于画水面小方法>.<海浪的画法>效果逼真质感,粗暴实用,值得借鉴学习 分类: PS图片处理

为帝国cms模板添加站内搜索小教程

由于客户的需要,最近都在整帝国cms,很多东西还是不熟悉,特别是帝国cms模板,以前用的那些网站模板一般是保存在ftp文件中,而帝国cms模板是直接保存在数据库中,修改是在网站后台的模板管理,得慢慢适应. 这几天接到一个站,整体是做得差不多了,就是有很多细节还没解决,例如帝国cms站内搜索还不能实现.本着好奇的新鲜,就随着xmyanke一起来鼓捣一下吧. 在本帝国cms模板修改案例中,站内搜索是放在网站头部右上角,那么我们就在后台-模板-公共模板变量-管理模板变量-页面头部[!--temp.he

后期调色小教程 漂亮色调一秒钟变出来

  作为一个爱玩儿的妹纸,出门和好基友们拍照留念是难免的.各种漫展也是我的最爱.可是每次回家有成堆的照片要返给朋友可成了一个头疼的事儿.大部分懒孩子选择了一些简单方便的美图软件来批量修改这些照片.但是这些美图软件大部分功能比较单一,修图痕迹明显,有的还会缩小图片降低画质.这就很头疼了!可是大家都觉得"这个滤镜颜色好漂亮啊!""这个滤镜很有气氛呢."如此之类的.难道我大PS就没有这种类似智能滤镜的功能吗! 有的哦!这次要悄悄告诉大家两个很好用的PS调色功能."

icon小教程之图标细节的绘制

今天通过一个简单的game图标的绘制教程,和大家分享在绘制过程中细节的处理和一些画图标的心得,好的,我们开始吧! Step1 首先要定好图标的透视,这是非常重要的,这关系到图标的整体美感,透视本身也可以很好的表现图标的细节,为了透视的真实,可以通过3D软件或者平面软件中的一些的透视功能来实现.整体框架搭好,开始接下来的绘制. Step2先大致的铺上一层"控制板"的颜色,这里需要注意一些基本的光影渐变,以及边缘的处理. Step3这一步我们将通过一些http://www.aliyu

初学网页Javascript经典小教程总结

javascript|初学|教程|网页 适合阅读范围:对JavaScript一无所知-离精通只差一步之遥的人  基础知识:HTML  JavaScript就这么回事1:基础知识   1 创建脚本块  1: <script language="JavaScript">  2: JavaScript code goes here  3: </script>   2 隐藏脚本代码  1: <script language="JavaScript&quo

MAYA多边形工具初级小教程

这个教程主要讲了MAYA中append to polygon settings.下面举例来说明: 1.先照图出一个随意的多边形. 选择 append to polygon settings ,按reset 恢复默认设置,点选平面,看到平面的变化了吧. 在边界上点击,确定起时点之后,在你想添加点的地方在随意来了. 我这里是做了一个突出的多边形,最后按回车确定. 上面我们简单学习了个下这个工具的平面添加法.以后我们会接着来学习以下对于立体的平面添加.

后期小教程:低饱和人文照片如何处理?

  人文纪实片的处理方法有很多,而低饱和处理,则是其中比较常见的一种,那么,接下来一起看看摄影师盖子是如何处理的吧! 分类: PS图片处理 ps后期处理教程

如何让thinkphp在模型中自动完成session赋值小教程_php技巧

相信用过thinkphp的用户都知道thinkphp的模型可以完成很多辅助功能,比如自动验证.自动完成等,今天在开发中遇到自动完成中需要获取session值 然后自动赋值的功能,具体看代码: class ArticlelModel extends Model { protected $_auto = array ( array('addtime','time',1,'function'), array('username','getName',1,'callback') ); //这个函数获取s