这篇文章主要介绍了php链表操作,结合简单实例形式分析了php链表的定义与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了php链表操作。分享给大家供大家参考,具体如下:
在php中运行数据结构,基本都是用数组模拟的,只是用一直思想而已。
今天遇到的这个问题是,两个链表进行合并。
链表合并效果图
问题描述:a链表是模版链表,b链表的长度不确定,a,b二个链表结合后形成c链表。
说一下编程思想:a链表是模版链表所以在运算完成了,长度了唯一不变的。而b链表的长度是不确定的。所以可以先对b链表进行判断,分了三步:
b链表是不是为空
b链表是不是比a链表短或者相等
b链表是不是比a链表长
编程就是要列出尽可能的可能性。抓住变量,由于题目要求,当a链表和b链表相等时,直接返回b链表,所以不用考虑这个问题。
$node = array("nameid"=>"","shoolid"=>" ","depid"=>" ","start"=>" ","end"=>" ");/*现在上面数据,有的数据存在a链表里面,有的存在b链表里面,如果都没有,用a链表的数据节点来代替。开始第一次完成的时候,想了一个很蛋痛的方式,还用到arra_diff()函数用这个链表作差。后来仔细思考了一下。*///$data 表示b链表//$time 表示a链表//这里为了节约资源,没开第三条链表,而是在b链表中操作,为什么要选一条不确定长度的链表//看完你就知道为什么了if(empty($data)) //{ //申请节点 $data = array(); foreach($time as $value) { //将a链表的数据进行需求处理,组成我们需要的节点模式 $array = array("nameid"=>$value["id"],"depid"=>$depid,"schoolid"=>$schoolid,"start"=>"","end"=>""); array_push($data,$array); //将新节点压进栈 }}else if(count($data)<=count($time)) //进行长度对比{ for($i=0;$i<count($time);$i++) //for循环,不建议在for循环继续动态判断,我这里是偷懒了。 { if(empty($data[$i])) { //如果数据节点空,则构建节点 $array = array("nameid"=>$time[$i]["id"],"depid"=>$depid,"schoolid"=>$schoolid,"start"=>"","end"=>""); array_push($data,$array); } }}
上面的算法就简单的实习了,将a链表的数据,和b的数据组合。
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注!
相关推荐:
关于php中多人模块开发的原理
如何编程实现php追加内容到txt文件中的方法
以上就是关于php的链表操作的详细内容。
