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 相关文章推荐
第十一节 重载 [11]
Oct 09 PHP
使用php来实现网络服务
Sep 15 PHP
域名和cookie问题(域名后缀)
Oct 10 PHP
简单的php文件上传(实例)
Oct 27 PHP
php获取汉字首字母的函数
Nov 07 PHP
php实现字符串首字母大写和单词首字母大写的方法
Mar 14 PHP
PHP随机生成信用卡卡号的方法
Mar 23 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
Sep 20 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
Oct 17 PHP
php对微信支付回调处理的方法
Aug 23 PHP
php函数式编程简单示例
Aug 08 PHP
PHP 枚举类型的管理与设计知识点总结
Feb 13 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中iconv函数使用方法
2008/05/24 PHP
一些php技巧与注意事项分析
2011/02/03 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
2015/06/24 PHP
PHP+shell实现多线程的方法
2015/07/01 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
2019/04/23 PHP
javascript中使用css需要注意的地方小结
2010/09/01 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
2015/05/28 Javascript
javascript数组排序汇总
2015/07/07 Javascript
JavaScript实现刷新不重记的倒计时
2016/08/10 Javascript
基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
2016/10/30 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
vue.js加载新的内容(实例代码)
2017/06/01 Javascript
微信小程序实战篇之购物车的实现代码示例
2017/11/30 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
Vue项目引发的「过滤器」使用教程
2019/03/12 Javascript
[01:14:55]EG vs Spirit Supermajor 败者组 BO3 第三场 6.4
2018/06/05 DOTA
在Python web中实现验证码图片代码分享
2017/11/09 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
2019/01/15 Python
解决Python3 被PHP程序调用执行返回乱码的问题
2019/02/16 Python
Python Matplotlib 基于networkx画关系网络图
2019/07/10 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
2019/10/22 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
2012/06/27 面试题
高一政治教学反思
2014/01/28 职场文书
初中同学聚会邀请函
2014/02/03 职场文书
高中生思想道德自我评价
2015/03/09 职场文书
慈善献爱心倡议书
2015/04/27 职场文书
2015年实习生工作总结报告
2015/04/28 职场文书
小学生光盘行动倡议书
2015/04/28 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL