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 相关文章推荐
基于mysql的论坛(7)
Oct 09 PHP
PHP学习资料汇总与网址
Mar 16 PHP
由php if 想到的些问题
Mar 22 PHP
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
Aug 02 PHP
php向js函数传参的几种方法
Aug 10 PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
Aug 20 PHP
php实现递归抓取网页类实例
Apr 03 PHP
php轻量级的性能分析工具xhprof的安装使用
Aug 12 PHP
php中使用websocket详解
Sep 23 PHP
PHP简单实现合并2个数字键数组值的方法
May 30 PHP
PHP数组对象与Json转换操作实例分析
Oct 22 PHP
浅谈PHP中的那些魔术常量
Dec 02 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
PHP4实际应用经验篇(3)
2006/10/09 PHP
php 高效率写法 推荐
2010/02/21 PHP
PHP性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
实例讲解php数据访问
2016/05/09 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
2016/10/14 PHP
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
基于JavaScript 下namespace 功能的简单分析
2013/07/05 Javascript
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
关于动态执行代码(js的Eval)实例详解
2016/08/15 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)
2020/06/05 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
2020/11/12 Javascript
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
[47:46]完美世界DOTA2联赛 Magma vs GXR 第三场 11.07
2020/11/10 DOTA
介绍Python中内置的itertools模块
2015/04/29 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
Django中的静态文件管理过程解析
2019/08/01 Python
使用tensorflow实现矩阵分解方式
2020/02/07 Python
pycharm设置当前工作目录的操作(working directory)
2020/02/14 Python
如何基于线程池提升request模块效率
2020/04/18 Python
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
Genny意大利官网:意大利高级时装品牌
2020/04/15 全球购物
银行存款证明样本
2014/01/17 职场文书
静心口服夜广告词
2014/03/20 职场文书
公司年会主持词
2014/03/22 职场文书
煤矿安全生产标语
2014/06/06 职场文书
2015感人爱情寄语
2015/02/26 职场文书
幼儿教师三分钟演讲稿
2019/06/21 职场文书
python数字图像处理数据类型及颜色空间转换
2022/06/28 Python