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实现的生成静态HTML速度快类库
Mar 31 PHP
php escape URL编码
Dec 10 PHP
zf框架的Filter过滤器使用示例
Mar 13 PHP
Thinkphp中的volist标签用法简介
Jun 18 PHP
PHP中两个float(浮点数)比较实例分析
Sep 27 PHP
php array_multisort 对数组进行排序详解及实例代码
Oct 27 PHP
thinkPHP数据库增删改查操作方法实例详解
Dec 06 PHP
laravel5.4生成验证码的实例讲解
Aug 05 PHP
php 判断IP为有效IP地址的方法
Jan 28 PHP
PHP实现支持CURL字符串证书传输的方法
Mar 23 PHP
PHP操作XML中XPath的应用示例
Jul 04 PHP
PHP如何通过date() 函数格式化显示时间
Nov 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
利用文件属性结合Session实现在线人数统计
2006/10/09 PHP
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
深入解析php之sphinx
2013/05/15 PHP
详解cookie验证的php应用的一种SSO解决办法
2017/10/20 PHP
js验证表单第二部分
2006/11/25 Javascript
Javascript 继承实现例子
2009/08/12 Javascript
Dom 结点创建 基础知识
2011/10/01 Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
2013/01/04 Javascript
jquery隐藏标签和显示标签的实例
2013/11/11 Javascript
js将控件隐藏及display属性的使用介绍
2013/12/30 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
java和javascript获取word文档的书签位置对比
2014/06/19 Javascript
JavaScript函数详解
2014/11/17 Javascript
JS在可编辑的div中的光标位置插入内容的方法
2014/11/20 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
2015/04/22 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
XML、HTML、CSS与JS的区别整理
2016/02/18 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
[原创]JavaScript语法高亮插件highlight.js用法详解【附highlight.js本站下载】
2016/11/01 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
nginx+vue.js实现前后端分离的示例代码
2018/02/12 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
9种方法优化jQuery代码详解
2020/02/04 jQuery
VSCode launch.json配置详细教程
2020/06/18 Javascript
详解Swift中属性的声明与作用
2016/06/30 Python
python字符串,数值计算
2016/10/05 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
2017/07/24 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
python写入文件自动换行问题的方法
2019/07/05 Python
东南亚地区最大的购物网站Lazada新加坡站点:Lazada.sg
2016/07/17 全球购物
安全责任书
2015/01/29 职场文书
教师反邪教心得体会
2016/01/15 职场文书
《岳阳楼记》原文、译文赏析
2019/09/10 职场文书
HTML中的表单元素介绍
2022/02/28 HTML / CSS