php实现单链表的实例代码


Posted in PHP onMarch 22, 2013
<?php
//链表节点 
class node { 
    public $id; //节点id 
    public $name; //节点名称 
    public $next; //下一节点 
    
    public function __construct($id, $name) { 
        $this->id = $id; 
        $this->name = $name; 
        $this->next = null; 
    } 
}
//单链表 
class singelLinkList { 
    private $header; //链表头节点 
    
    //构造方法 
    public function __construct($id = null, $name = null) { 
        $this->header = new node ( $id, $name, null ); 
    } 
    //获取链表长度 
    public function getLinkLength() { 
        $i = 0; 
        $current = $this->header; 
        while ( $current->next != null ) { 
            $i ++; 
            $current = $current->next; 
        } 
        return $i; 
    } 
    //添加节点数据 
    public function addLink($node) { 
        $current = $this->header; 
        while ( $current->next != null ) { 
            if ($current->next->id > $node->id) { 
                break; 
            } 
            $current = $current->next; 
        } 
        $node->next = $current->next; 
        $current->next = $node; 
    } 
    //删除链表节点 
    public function delLink($id) { 
        $current = $this->header; 
        $flag = false; 
        while ( $current->next != null ) { 
            if ($current->next->id == $id) { 
                $flag = true; 
                break; 
            } 
            $current = $current->next; 
        } 
        if ($flag) { 
            $current->next = $current->next->next; 
        } else { 
            echo "未找到id=" . $id . "的节点!<br>"; 
        } 
    } 
    //获取链表 
    public function getLinkList() { 
        $current = $this->header; 
        if ($current->next == null) { 
            echo ("链表为空!"); 
            return; 
        } 
        while ( $current->next != null ) { 
            echo 'id:' . $current->next->id . '   name:' . $current->next->name . "<br>"; 
            if ($current->next->next == null) { 
                break; 
            } 
            $current = $current->next; 
        } 
    } 
    //获取节点名字 
    public function getLinkNameById($id) { 
        $current = $this->header; 
        if ($current->next == null) { 
            echo "链表为空!"; 
            return; 
        } 
        while ( $current->next != null ) { 
            if ($current->id == $id) { 
                break; 
            } 
            $current = $current->next; 
        } 
        return $current->name; 
    } 
    //更新节点名称 
    public function updateLink($id, $name) { 
        $current = $this->header; 
        if ($current->next == null) { 
            echo "链表为空!"; 
            return; 
        } 
        while ( $current->next != null ) { 
            if ($current->id == $id) { 
                break; 
            } 
            $current = $current->next; 
        } 
        return $current->name = $name; 
    } 
}
$lists = new singelLinkList (); 
$lists->addLink ( new node ( 5, 'eeeeee' ) ); 
$lists->addLink ( new node ( 1, 'aaaaaa' ) ); 
$lists->addLink ( new node ( 6, 'ffffff' ) ); 
$lists->addLink ( new node ( 4, 'dddddd' ) ); 
$lists->addLink ( new node ( 3, 'cccccc' ) ); 
$lists->addLink ( new node ( 2, 'bbbbbb' ) ); 
$lists->getLinkList (); 
echo "<br>-----------删除节点--------------<br>"; 
$lists->delLink ( 5 ); 
$lists->getLinkList ();
echo "<br>-----------更新节点名称--------------<br>"; 
$lists->updateLink ( 3, "222222" ); 
$lists->getLinkList ();
echo "<br>-----------获取节点名称--------------<br>"; 
echo $lists->getLinkNameById ( 5 );
echo "<br>-----------获取链表长度--------------<br>"; 
echo $lists->getLinkLength (); 
?>
PHP 相关文章推荐
php绝对路径与相对路径之间关系的的分析
Mar 03 PHP
探讨多键值cookie(php中cookie存取数组)的详解
Jun 06 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
Apr 09 PHP
PHP多进程编程实例
Oct 15 PHP
php绘图之生成饼状图的方法
Jan 24 PHP
php实现word转html的方法
Jan 22 PHP
crontab无法执行php的解决方法
Jan 25 PHP
php实现的读取CSV文件函数示例
Feb 07 PHP
基于php编程规范(详解)
Aug 17 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
Aug 28 PHP
laravel 修改记住我功能的cookie保存时间的方法
Oct 14 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 PHP
php 判断数组是几维数组
Mar 20 #PHP
php页面消耗内存过大的处理办法
Mar 18 #PHP
ajax取消挂起请求的处理方法
Mar 18 #PHP
smarty 缓存控制前的页面静态化原理
Mar 15 #PHP
PHP中使用cURL实现Get和Post请求的方法
Mar 13 #PHP
php文本转图片自动换行的方法
Mar 13 #PHP
用Php编写注册后Email激活验证的实例代码
Mar 11 #PHP
You might like
php下载远程文件类(支持断点续传)
2008/11/14 PHP
PHP获取本周第一天和最后一天示例代码
2014/02/24 PHP
PHP中isset()和unset()函数的用法小结
2014/03/11 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
2014/06/12 PHP
PHP函数实现分页含文本分页和数字分页
2014/10/23 PHP
CSDN轮换广告图片轮换效果
2007/03/27 Javascript
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
javascript firefox 自动加载iframe 自动调整高宽示例
2013/08/27 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
2014/05/07 Javascript
Bootstrap开发实战之第一次接触Bootstrap
2016/06/02 Javascript
JS动态给对象添加事件的简单方法
2016/07/19 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
2019/06/03 Javascript
利用d3.js制作连线动画图与编辑器的方法实例
2019/09/05 Javascript
jQuery+ThinkPHP实现图片上传
2020/07/23 jQuery
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
[03:46]显微镜下的DOTA2第七期——满血与残血
2014/06/20 DOTA
Python3一行代码实现图片文字识别的示例
2018/01/15 Python
Python中利用aiohttp制作异步爬虫及简单应用
2018/11/29 Python
python实现从wind导入数据
2019/12/03 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
德国高尔夫商店:Par71.de
2020/11/29 全球购物
模具专业推荐信
2013/10/30 职场文书
18岁生日感言
2014/01/12 职场文书
计算机科学系职业生涯规划书
2014/03/08 职场文书
慈善捐赠倡议书
2014/08/30 职场文书
讲党性心得体会
2014/09/03 职场文书
放飞理想演讲稿
2014/09/09 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
辞职信模板(中英文版)
2015/02/27 职场文书
队名及霸气口号大全
2015/12/25 职场文书
Python PIL按比例裁剪图片
2022/05/11 Python
MYSQL如何查看操作日志详解
2022/05/30 MySQL