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 相关文章推荐
用PHP控制用户的浏览器--ob*函数的使用说明
Mar 16 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
Jul 28 PHP
探讨fckeditor在Php中的配置详解
Jun 08 PHP
浅析echo(),print(),print_r(),return之间的区别
Nov 27 PHP
php实现分页工具类分享
Jan 09 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
Apr 17 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
Mar 23 PHP
分享php多功能图片处理类
May 15 PHP
PHP序列化操作方法分析
Sep 28 PHP
php中html_entity_decode实现HTML实体转义
Jun 13 PHP
PHP实现基于状态的责任链审批模式详解
May 31 PHP
php curl发送请求实例方法
Aug 01 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
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
通俗易懂的php防注入代码
2010/04/07 PHP
php将数据库导出成excel的方法
2010/05/07 PHP
在PHP中设置、使用、删除Cookie的解决方法
2013/05/06 PHP
php页面缓存方法小结
2015/01/10 PHP
php微信公众平台开发类实例
2015/04/01 PHP
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
2010/06/19 Javascript
禁用页面部分JavaScript方法的具体实现
2013/07/31 Javascript
JavaScript中数据结构与算法(三):链表
2015/06/19 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
AngularJS控制器之间的数据共享及通信详解
2016/08/01 Javascript
js判断所有表单项不为空则提交表单的实现方法
2016/09/09 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
详解webpack-dev-server使用方法
2018/09/14 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
JS实现吸顶特效
2020/01/08 Javascript
Vue前端判断数据对象是否为空的实例
2020/09/02 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
nuxt.js写项目时增加错误提示页面操作
2020/11/05 Javascript
python正则表达式中的括号匹配问题
2014/12/14 Python
django1.8使用表单上传文件的实现方法
2016/11/04 Python
python集合是否可变总结
2019/06/20 Python
python实现的读取网页并分词功能示例
2019/10/29 Python
Python Web静态服务器非堵塞模式实现方法示例
2019/11/21 Python
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
夜班门卫岗位职责
2013/12/09 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
授权委托书(公民个人适用)
2014/09/19 职场文书
2014年幼儿园教师工作总结
2014/11/08 职场文书
结婚堵门保证书
2015/05/08 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
2019年XX公司的晨会制度及流程!
2019/07/23 职场文书