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令牌 Token改进版
Jul 18 PHP
php Session存储到Redis的方法
Nov 04 PHP
codeigniter使用技巧批量插入数据实例方法分享
Dec 31 PHP
php使用GeoIP库实例
Jun 27 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
Jun 29 PHP
php隐藏实际地址的文件下载方法
Apr 18 PHP
微信支付开发告警通知实例
Jul 12 PHP
PHP模糊查询的实现方法(推荐)
Sep 06 PHP
php微信公众号js-sdk开发应用
Nov 28 PHP
php+redis消息队列实现抢购功能
Feb 08 PHP
深入研究PHP中的preg_replace和代码执行
Aug 15 PHP
php进程daemon化的正确实现方法
Sep 06 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写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
wampserver改变默认网站目录的办法
2015/08/05 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
浅谈laravel aliases别名的原理
2019/10/24 PHP
关于火狐(firefox)及ie下event获取的两种方法
2012/12/27 Javascript
js调用webservice中的方法实现思路及代码
2013/02/25 Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
2013/03/22 Javascript
JS控制一个DIV层在指定时间内消失的方法
2014/02/17 Javascript
浅析javascript 定时器
2014/12/23 Javascript
javascript小数精度丢失的完美解决方法
2016/05/31 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
2016/06/26 Javascript
JS实现全屏的四种写法
2016/12/30 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
vue 遮罩层阻止默认滚动事件操作
2020/07/28 Javascript
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
一篇文章快速了解Python的GIL
2018/01/12 Python
Python实现统计给定列表中指定数字出现次数的方法
2018/04/11 Python
python matlibplot绘制3D图形
2018/07/02 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
2018/08/22 Python
python按照多个条件排序的方法
2019/02/08 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2019/07/06 Python
浅谈django2.0 ForeignKey参数的变化
2019/08/06 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
2019/08/07 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
谈谈python垃圾回收机制
2020/09/27 Python
socket.io 和canvas 实现的共享画板功能
2019/05/22 HTML / CSS
爱尔兰灯和灯具网上商店:Lights.ie
2018/03/26 全球购物
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
合伙经营协议书范本
2014/09/13 职场文书
学生自我评语
2015/01/04 职场文书
学生检讨书怎么写
2015/05/07 职场文书
女方家长婚礼致辞
2015/07/27 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android