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 mysql数据库操作类
Jun 04 PHP
linux php mysql数据库备份实现代码
Mar 10 PHP
PHP 执行系统外部命令 system() exec() passthru()
Aug 11 PHP
解析thinkphp中的导入文件标签
Jun 20 PHP
PHP中文编码小技巧
Dec 25 PHP
php实现获取文件mime类型的方法
Feb 11 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
Mar 23 PHP
php源码之将图片转化为data/base64数据流实例详解
Nov 27 PHP
PHP运用foreach神奇的转换数组(实例讲解)
Feb 01 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
Oct 17 PHP
PDO::inTransaction讲解
Jan 28 PHP
PhpSpreadsheet设置单元格常用操作汇总
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
新手配置 PHP 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
初品cakephp 入门基础
2012/02/16 PHP
php中选择什么接口(mysql、mysqli)访问mysql
2013/02/06 PHP
php轻松实现中英文混排字符串截取
2014/05/28 PHP
php实现爬取和分析知乎用户数据
2016/01/26 PHP
php PDO属性设置与操作方法分析
2018/12/27 PHP
javascript语句中的CDATA标签的意义
2007/05/09 Javascript
JavaScript的parseInt 进制问题
2009/05/07 Javascript
判断浏览器的javascript版本的代码
2010/09/03 Javascript
JavaScript实现的石头剪刀布游戏源码分享
2014/08/22 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
2016/03/02 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
2016/08/17 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
vue中监听返回键问题
2019/08/28 Javascript
vue实现标签云效果的示例
2020/11/09 Javascript
Python中return语句用法实例分析
2015/08/04 Python
python库matplotlib绘制坐标图
2019/10/18 Python
django中cookiecutter的使用教程
2020/12/03 Python
python基于爬虫+django,打造个性化API接口
2021/01/21 Python
python中最小二乘法详细讲解
2021/02/19 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
彪马日本官网:PUMA日本
2019/01/31 全球购物
建筑文秘专业个人求职信范文
2013/12/28 职场文书
尊师重教演讲稿
2014/09/04 职场文书
干部作风建设心得体会
2014/10/22 职场文书
创业计划书之溜冰场
2019/10/25 职场文书
如何使用SQL Server语句创建表
2022/04/12 SQL Server
Win10鼠标宏怎么设置?win10系统鼠标宏的设置方法
2022/08/14 数码科技