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 相关文章推荐
phpmyadmin里面导入sql语句格式的大量数据的方法
Jun 05 PHP
ajax 的post方法实例(带循环)
Jul 04 PHP
php中批量修改文件后缀名的函数代码
Oct 23 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
Feb 02 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
Nov 18 PHP
PHP aes (ecb)解密后乱码问题
Jun 22 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
May 13 PHP
php连接oracle数据库的方法(测试成功)
May 26 PHP
PHP将URL转换成短网址的算法分享
Sep 13 PHP
Smarty模板常见的简单应用分析
Nov 15 PHP
PHP实现合并两个排序链表的方法
Jan 19 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
Oct 15 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
用PHP读取超大文件的实例代码
2012/04/01 PHP
php header功能的使用
2013/10/28 PHP
php版微信小店调用api示例代码
2016/11/12 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
JavaScript阻止浏览器返回按钮的方法
2015/03/18 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
文本框只能输入数字的实现方法(兼容IE火狐)
2016/06/25 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
2016/12/26 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
JS实现获取数组中最大值或最小值功能示例
2019/03/02 Javascript
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
2019/05/30 Javascript
layui多图上传实现删除功能的例子
2019/09/23 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
jQuery实现评论模块
2020/08/19 jQuery
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
Python Json序列化与反序列化的示例
2018/01/31 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
python根据文章标题内容自动生成摘要的实例
2019/02/21 Python
python ddt数据驱动最简实例代码
2019/02/22 Python
详解Python文件修改的两种方式
2019/08/22 Python
Keras中 ImageDataGenerator函数的参数用法
2020/07/03 Python
css3如何绘制一个圆圆的loading转圈动画
2018/01/09 HTML / CSS
将HTML5 Canvas的内容保存为图片借助toDataURL实现
2013/05/20 HTML / CSS
来自圣地亚哥的实惠太阳镜:Knockaround
2018/08/27 全球购物
实体的生命周期
2013/08/31 面试题
专业见习报告范文
2014/11/03 职场文书
合同审查法律意见书
2015/06/04 职场文书
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
剑指Offer之Java算法习题精讲二叉树专项训练
2022/03/21 Java/Android