PHP小教程之实现链表


Posted in PHP onJune 09, 2014

看了很久数据结构但是没有怎么用过,在网上看到了关于PHP的数据结构,学习了一下,与大家一起分享一下。

class Hero
{
    public $no;//排名
    public $name;//名字
    public $next=null;//$next是一个引用,指向另外一个Hero的对象实例    public function __construct($no='',$name='')
    {
        $this->no=$no;
        $this->name=$name;
    }
    static public function showList($head)
    {
        $cur = $head;
        while($cur->next!=null)
        {
            echo "排名:".$cur->next->no.",名字:".$cur->next->name."<br>";
            $cur = $cur->next;
        }
    }
    //普通插入
    static public function addHero($head,$hero)
    {
        $cur = $head;
        while($cur->next!=null)
        {
            $cur = $cur->next;
        }
        $cur->next=$hero;
    }
    //有序的链表的插入  
    static public function addHeroSorted($head,$hero)
    {
        $cur = $head;
        $addNo = $hero->no;
        while($cur->next->no <= $addNo)
        {
            $cur = $cur->next;
        }
        /*$tep = new Hero();
        $tep = $cur->next;
        $cur->next = $hero;
        $hero->next =$tep;*/
        $hero->next=$cur->next;
        $cur->next=$hero;
    }
    static public function deleteHero($head,$no)
    {
        $cur = $head;
        while($cur->next->no != $no && $cur->next!= null)
        {
            $cur = $cur->next;
        }
        if($cur->next->no != null)
        {
            $cur->next = $cur->next->next;
            echo "删除成功<br>"; 
        }
        else
        {
            echo "没有找到<br>"; 
        }
    }
    static public function updateHero($head,$hero)
    {
        $cur = $head;
        while($cur->next->no != $hero->no && $cur->next!= null)
        {
            $cur = $cur->next;
        }
        if($cur->next->no != null)
        {
            $hero->next = $cur->next->next;
            $cur->next = $hero;
            echo "更改成功<br>"; 
        }
        else
        {
            echo "没有找到<br>"; 
        }
    }
}

//创建head头
$head = new Hero();
//第一个
$hero = new Hero(1,'111');
//连接
$head->next = $hero;
//第二个
$hero2 = new Hero(3,'333');
//连接
Hero::addHero($head,$hero2);
$hero3 = new Hero(2,'222');
Hero::addHeroSorted($head,$hero3);
//显示
Hero::showlist($head);
//删除
Hero::deleteHero($head,4);
//显示
Hero::showlist($head);
//更改
$hero4=new Hero(2,'xxx');
Hero::updateHero($head,$hero4);
//显示
Hero::showlist($head);

有序的插入的话需要遍历一遍链表,链表的一些知识就不介绍了哈。这里主要分享一下代码。

PHP 相关文章推荐
dede全站URL静态化改造[070414更正]
Apr 17 PHP
PHP与MySQL开发中页面出现乱码的一种解决方法
Jul 29 PHP
PHP序列号生成函数和字符串替换函数代码
Jun 07 PHP
php实现用于验证所有类型的信用卡类
Mar 24 PHP
详解WordPress开发中wp_title()函数的用法
Jan 07 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
Jul 20 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
Apr 12 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
Jan 16 PHP
Laravel框架模型的创建及模型对数据操作示例
May 07 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 PHP
详解thinkphp的Auth类认证
May 28 PHP
浅谈Eclipse PDT调试PHP程序
Jun 09 #PHP
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
Jun 09 #PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
Oct 01 #PHP
PHP遍历目录并返回统计目录大小
Jun 09 #PHP
php中替换字符串中的空格为逗号','的方法
Jun 09 #PHP
使用php批量删除数据库下所有前缀为prefix_的表
Jun 09 #PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
Jun 09 #PHP
You might like
探讨GDFONTPATH能否被winxp下的php支持
2013/06/21 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
封装的原生javascript弹出层代码
2010/09/24 Javascript
鼠标事件延时切换插件
2011/03/12 Javascript
JS自动缩小超出大小的图片
2012/10/12 Javascript
面向对象继承实例(a如何继承b问题)(自写)
2013/07/01 Javascript
简介JavaScript中search()方法的使用
2015/06/06 Javascript
JS实现超简单的仿QQ折叠菜单效果
2015/09/21 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
js编写一个简单的产品放大效果代码
2016/06/27 Javascript
jquery+css3问卷答题卡翻页动画效果示例
2016/10/26 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
初探js和简单隐藏效果的实例
2017/11/23 Javascript
windows下更新npm和node的方法
2017/11/30 Javascript
JS实现的tab页切换效果完整示例
2018/12/18 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
vue中组件的3种使用方式详解
2019/03/23 Javascript
vue柱状进度条图像的完美实现方案
2019/08/26 Javascript
js中switch语句的学习笔记
2020/03/25 Javascript
Python数据结构之Array用法实例
2014/10/09 Python
Python Flask-web表单使用详解
2017/11/18 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
2017/12/20 Python
Django 实现下载文件功能的示例
2018/03/06 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
PyQt5 实现字体大小自适应分辨率的方法
2019/06/18 Python
python递归法解决棋盘分割问题
2019/07/17 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
2019/09/07 Python
python如何使用Redis构建分布式锁
2020/01/16 Python
python中K-means算法基础知识点
2021/01/25 Python
Elemental Herbology官网:英国美容品牌
2019/04/27 全球购物
幼儿园大班家长评语
2014/04/17 职场文书
2014年校长工作总结
2014/12/11 职场文书
学生个人评语大全
2015/01/04 职场文书
物业工程部经理岗位职责
2015/04/09 职场文书
python实现Thrift服务端的方法
2021/04/20 Python
一次MySQL启动导致的事故实战记录
2021/09/15 MySQL