PHP单链表的实现代码


Posted in PHP onJuly 05, 2016

单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。

单链表简介

链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。

关键代码如下所示:

<?php
/**
* 单链表
*/ 
class Demo
{
private $id;
public $name;
public $next;
public function __construct ($id = '', $name = '')
{
$this->id = $id;
$this->name = $name;
}
static public function show ($head)
{
$cur = $head;
while ($cur->next) {
echo $cur->next->id,'###',$cur->next->name,'<br />';
$cur = $cur->next;
}
echo '<hr />';
}
//尾插法
static public function push ($head, $node)
{
$cur = $head;
while (NULL != $cur->next) {
$cur = $cur->next;
}
$cur->next = $node;
return $head;
}
static public function insert($head, $node)
{
$cur = $head;
while (NULL != $cur->next) {
if ($cur->next->id > $node->id) {
break;
}
$cur = $cur->next;
}
$node->next = $cur->next;
$cur->next = $node;
return $head;
}
static public function edit($head, $node)
{
$cur = $head;
while (NULL != $cur->next) {
if ($cur->next->id == $node->id) {
break;
}
$cur = $cur->next;
}
$cur->next->name = $node->name;
return $head; 
}
static public function pop ($head, $node)
{
$cur = $head;
while (NULL != $cur->next) {
if ($cur->next == $node) {
break;
}
$cur = $cur->next;
}
$cur->next = $node->next;
return $head; 
}
}
$team = new Demo();
$node1 = new Demo(1, '唐三藏');
Demo::push($team, $node1);
$node1->name = '唐僧';
Demo::show($team);
// Demo::show($team);
$node2 = new Demo(2, '孙悟空');
Demo::insert($team, $node2);
// Demo::show($team);
$node3 = new Demo(5, '白龙马');
Demo::push($team, $node3);
// Demo::show($team);
$node4 = new Demo(3, '猪八戒');
Demo::insert($team, $node4);
// Demo::show($team);
$node5 = new Demo(4, '沙和尚');
Demo::insert($team, $node5);
// Demo::show($team);
$node4->name = '猪悟能';//php对象传引用,所以Demo::edit没有必要
// unset($node4);
// $node4 = new Demo(3, '猪悟能');
// Demo::edit($team, $node4);
Demo::pop($team, $node1);
Demo::show($team);

以上所述是小编给大家介绍的PHP单链表的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
php $_ENV为空的原因分析
Jun 01 PHP
php中json_encode中文编码问题分析
Sep 13 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
Jul 28 PHP
PHP易混淆函数的区别及用法汇总
Nov 22 PHP
php实现按照权重随机排序数据的方法
Jan 09 PHP
PHP实现动态web服务器方法
Jul 29 PHP
php自定义类fsocket模拟post或get请求的方法
Jul 31 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 PHP
PHP中file_put_contents追加和换行的实现方法
Apr 01 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
May 12 PHP
PHP+RabbitMQ实现消息队列的完整代码
Mar 20 PHP
yii框架使用分页的方法分析
Jul 25 PHP
php 数组字符串搜索array_search技巧
Jul 05 #PHP
php单链表实现代码分享
Jul 04 #PHP
Yii2.0预定义的别名功能小结
Jul 04 #PHP
Yii控制器中操作视图js的方法
Jul 04 #PHP
深入分析PHP优化及注意事项
Jul 04 #PHP
yum命令安装php7和相关扩展
Jul 04 #PHP
PHP中Array相关函数简介
Jul 03 #PHP
You might like
根德YB400的电路分析
2021/03/02 无线电
用PHP和ACCESS写聊天室(九)
2006/10/09 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
2015/11/05 PHP
php similar_text()函数的定义和用法
2016/05/12 PHP
基于PHP实现邮箱验证激活过程详解
2020/10/28 PHP
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
2013/08/05 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
2013/09/24 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
jquery.validate使用时遇到的问题
2015/05/25 Javascript
干货分享:让你分分钟学会javascript闭包
2015/12/25 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
2018/03/09 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
Vuex mutitons和actions初使用详解
2019/03/04 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
微信小程序自定义yPicker组件实现省市区三级联动功能
2020/10/29 Javascript
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
2019/05/07 Python
python Elasticsearch索引建立和数据的上传详解
2019/08/04 Python
python getpass模块用法及实例详解
2019/10/07 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
Python 矩阵转置的几种方法小结
2019/12/02 Python
Python执行时间的几种计算方法
2020/07/31 Python
Python创建文件夹与文件的快捷方法
2020/12/08 Python
无畏的旅行:Intrepid Travel
2017/12/20 全球购物
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
LN-CC中国:高端男装和女装的奢侈时尚目的地
2019/09/14 全球购物
伦敦新晋轻奢耳饰潮牌:Tada & Toy
2020/05/25 全球购物
房屋授权无偿使用证明
2014/11/29 职场文书
房屋认购协议书
2015/01/29 职场文书
教师考核表个人总结
2015/02/12 职场文书
期中考试后的感想
2015/08/07 职场文书
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
2021/05/27 Python
详解Redis的三种常用的缓存读写策略步骤
2022/05/06 Redis