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 图片上传类代码
Jul 17 PHP
php FLEA中二叉树数组的遍历输出
Sep 26 PHP
浅析PHP递归函数返回值使用方法
Feb 18 PHP
深入解析fsockopen与pfsockopen的区别
Jul 05 PHP
php遍历树的常用方法汇总
Jun 18 PHP
怎样搭建PHP开发环境
Jul 28 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
Aug 18 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
Dec 16 PHP
PHP静态成员变量
Feb 14 PHP
php利用fsockopen GET/POST提交表单及上传文件
May 22 PHP
yii2中关于加密解密的那些事儿
Jun 12 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
Dec 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修改xml文档内容的方法
2015/01/23 PHP
PHP读取mssql json数据中文乱码的解决办法
2016/04/11 PHP
prototype 源码中文说明之 prototype.js
2006/09/22 Javascript
Jquery数独游戏解析(一)-页面布局
2010/11/05 Javascript
jQuery 的全选(全非选)即取得被选中的值使用介绍
2013/11/12 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
2014/01/02 Javascript
用jquery.sortElements实现table排序
2014/05/04 Javascript
js单独获取一个checkbox看其是否被选中
2014/09/22 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
JavaScript每天必学之数组和对象部分
2016/09/17 Javascript
详解Vue用axios发送post请求自动set cookie
2017/05/10 Javascript
原生js FileReader对象实现图片上传本地预览效果
2020/03/27 Javascript
node打造微信个人号机器人的方法示例
2018/04/26 Javascript
vue项目设置scrollTop不起作用(总结)
2018/12/21 Javascript
详解Vue路由自动注入实践
2019/04/17 Javascript
利用layer实现表单完美验证的方法
2019/09/26 Javascript
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
详解Python中使用base64模块来处理base64编码的方法
2016/07/01 Python
python实现微信远程控制电脑
2018/02/22 Python
python基于C/S模式实现聊天室功能
2019/01/09 Python
python顺序执行多个py文件的方法
2019/06/29 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
python实现简单飞行棋
2020/02/06 Python
Python+PyQt5+MySQL实现天气管理系统
2020/06/16 Python
HTML5 Blob 实现文件下载功能的示例代码
2019/11/29 HTML / CSS
H&M美国官网:欧洲最大的服饰零售商
2016/09/07 全球购物
在阿联酋购买翻新手机和平板电脑:Teckzu
2021/02/12 全球购物
新年爱情寄语
2014/04/08 职场文书
学习三严三实对照检查材料思想汇报
2014/09/22 职场文书
实习协议书
2015/01/27 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
PHP中strval()函数实例用法
2021/06/07 PHP
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL