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 相关文章推荐
不用iconv库的gb2312与utf-8的互换函数
Oct 09 PHP
PHPlet在Windows下的安装
Oct 09 PHP
substr()函数中文版
Oct 09 PHP
PHP Squid中可缓存的动态网页设计
Sep 17 PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
Jun 15 PHP
PHP用GD库生成高质量的缩略图片
Mar 09 PHP
php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
Jul 12 PHP
一个PHP的QRcode类与大家分享
Nov 13 PHP
wamp安装后自定义配置的方法
Aug 23 PHP
PHP中file_get_contents高?用法实例
Sep 24 PHP
php+ajax实现文章自动保存的方法
Dec 30 PHP
PHP new static 和 new self详解
Feb 19 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
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
浅谈php提交form表单
2015/07/01 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
PHP设计模式之装饰器模式定义与用法简单示例
2018/08/13 PHP
js 无提示关闭浏览器页面的代码
2010/03/09 Javascript
JS getStyle获取最终样式函数代码
2010/04/01 Javascript
屏蔽script注入小例子
2013/11/12 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
javascript实现行拖动的方法
2015/05/27 Javascript
js实现新浪微博首页效果
2015/10/16 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
AJAX和jQuery动态加载数据的实现方法
2016/12/05 Javascript
前端开发必知的15个jQuery小技巧
2017/01/22 Javascript
微信小程序开发之入门实例教程篇
2017/03/07 Javascript
JavaScript数据结构之二叉树的遍历算法示例
2017/04/13 Javascript
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
element ui里dialog关闭后清除验证条件方法
2018/02/26 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
2019/12/04 Javascript
vue中是怎样监听数组变化的
2020/10/24 Javascript
JavaScript中arguments的使用方法详解
2020/12/20 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
2015/05/20 Python
python正则表达式之作业计算器
2016/03/18 Python
python 读写txt文件 json文件的实现方法
2016/10/22 Python
python 链接和操作 memcache方法
2017/03/04 Python
pyqt5实现俄罗斯方块游戏
2019/01/11 Python
浅谈Pycharm中的Python Console与Terminal
2019/01/17 Python
让IE6支持css3,让 IE7、IE8 都支持CSS3
2011/10/09 HTML / CSS
Overload和Override的区别
2012/09/02 面试题
在职人员函授期间自我评价分享
2013/11/08 职场文书
某某同志考察材料
2014/05/28 职场文书
社团活动总结报告
2014/06/27 职场文书
作风大整顿心得体会
2014/09/10 职场文书
如何写新闻稿
2015/07/18 职场文书
学生病假条范文
2015/08/17 职场文书
nginx 配置缓存
2022/05/11 Servers