PHP小教程之实现双向链表


Posted in PHP onJune 12, 2014

看了很久数据结构但是没有怎么用过,在网上看到了关于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);
?>
PHP 相关文章推荐
用header 发送cookie的php代码
Mar 16 PHP
PHP版自动生成文章摘要
Jul 23 PHP
在Windows系统上安装PHP运行环境文字教程
Jul 19 PHP
PHP中的替代语法介绍
Jan 09 PHP
php实现仿写CodeIgniter的购物车类
Jul 29 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
Mar 21 PHP
Yii2超好用的日期和时间组件(值得收藏)
May 05 PHP
zend框架实现支持sql server的操作方法
Dec 08 PHP
PHP静态成员变量
Feb 14 PHP
使用phpQuery获取数组的实例
Mar 13 PHP
PHP基于堆栈实现的高级计算器功能示例
Sep 15 PHP
php7 list()、session及其他模块的修改实例分析
May 25 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
Jun 12 #PHP
PHP命名空间(Namespace)简明教程
Jun 11 #PHP
PHP APC配置文件2套和参数详解
Jun 11 #PHP
PHP捕获Fatal error错误的方法
Jun 11 #PHP
PHP独立Session数据库存储操作类分享
Jun 11 #PHP
php调用nginx的mod_zip模块打包ZIP文件
Jun 11 #PHP
php+ajax导入大数据时产生的问题处理
Jun 11 #PHP
You might like
ThinkPHP模版引擎之变量输出详解
2014/12/05 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
2020/02/10 PHP
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
基于jquery的大众点评,分类导航实现代码
2011/08/23 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
Webpack 实现 Node.js 代码热替换
2015/10/22 Javascript
无缝滚动的简单实现代码(推荐)
2016/06/07 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
addeventlistener监听scroll跟touch(实例讲解)
2017/08/04 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
vue-cli V3.0版本的使用详解
2018/10/24 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
Node登录权限验证token验证实现的方法示例
2020/05/25 Javascript
Vue中添加滚动事件设置的方法详解
2020/09/14 Javascript
浅谈vue使用axios的回调函数中this不指向vue实例,为undefined
2020/09/21 Javascript
[01:11:08]Winstrike vs NB 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
在Linux下使用Python的matplotlib绘制数据图的教程
2015/06/11 Python
python开发中range()函数用法实例分析
2015/11/12 Python
学习python 之编写简单乘法运算题
2016/02/27 Python
Python中单例模式总结
2018/02/20 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
对Python获取屏幕截图的4种方法详解
2019/08/27 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
python从Oracle读取数据生成图表
2020/10/14 Python
接口自动化多层嵌套json数据处理代码实例
2020/11/20 Python
马来西亚最好的婴儿商店:Motherhood
2017/09/14 全球购物
丽笙酒店官方网站:Radisson Hotels
2019/05/07 全球购物
写自荐信的注意事项
2014/03/09 职场文书
国培计划培训感言
2014/03/11 职场文书
医学生自我鉴定范文
2014/03/26 职场文书
机械操作工岗位职责
2014/08/08 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
北京天坛导游词
2015/02/12 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书