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 相关文章推荐
php&amp;java(二)
Oct 09 PHP
在PHP中使用Sockets 从Usenet中获取文件
Jan 10 PHP
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
Sep 09 PHP
PHP 查找字符串常用函数介绍
Jun 07 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
Nov 26 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
Dec 19 PHP
全面了解PHP中的全局变量
Jun 17 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
Nov 20 PHP
php计算多个集合的笛卡尔积实例详解
Feb 16 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
May 08 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
Nov 20 PHP
Yii2结合Workerman的websocket示例详解
Sep 10 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
使用php统计字符串中中英文字符的个数
2013/06/23 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
php获得用户ip地址的比较不错的方法
2014/02/08 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
Javascript 获取字符串字节数的多种方法
2009/06/02 Javascript
jquery滚动条插件jScrollPane的使用介绍
2013/11/08 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
tab栏切换原理
2017/03/22 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
微信小程序实现tab左右切换效果
2020/11/15 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
2019/07/16 jQuery
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
微信小程序工具函数封装
2019/10/28 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
Python实现批量读取word中表格信息的方法
2015/07/30 Python
Python存取XML的常见方法实例分析
2017/03/21 Python
Python 文件操作的详解及实例
2017/09/18 Python
python django使用haystack:全文检索的框架(实例讲解)
2017/09/27 Python
基于Pandas读取csv文件Error的总结
2018/06/15 Python
Python中的Django基本命令实例详解
2018/07/15 Python
Python 3.8正式发布重要新功能一览
2019/10/17 Python
CSS3制作缩略图的详细过程
2016/07/08 HTML / CSS
德国婴儿推车和儿童安全座椅商店:BABYSHOP
2016/09/01 全球购物
估算杭州有多少软件工程师
2015/08/11 面试题
《和田的维吾尔》教学反思
2014/04/14 职场文书
三分钟演讲稿范文
2014/04/24 职场文书
史学专业毕业生求职信
2014/05/09 职场文书
小学二年级数学教学计划
2015/01/20 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
Pytorch 如何实现常用正则化
2021/05/27 Python
Java实现简易的分词器功能
2021/06/15 Java/Android
linux中nohup和后台运行进程查看及终止
2021/06/24 Python
基于PyQT5制作一个桌面摸鱼工具
2022/02/15 Python