当前位置:Gxlcms > PHP教程 > PHP链表操作简单案例

PHP链表操作简单案例

时间:2021-07-01 10:21:17 帮助过:14人阅读

这篇文章主要介绍了PHP链表操作,结合简单实例形式分析了php链表的定义与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下

在php中运行数据结构,基本都是用数组模拟的,只是用一直思想而已。

今天遇到的这个问题是,两个链表进行合并。

链表合并效果图

问题描述:A链表是模版链表,B链表的长度不确定,A,B二个链表结合后形成C链表。

说一下编程思想:A链表是模版链表所以在运算完成了,长度了唯一不变的。而B链表的长度是不确定的。所以可以先对B链表进行判断,分了三步:

B链表是不是为空
B链表是不是比A链表短或者相等
B链表是不是比A链表长

编程就是要列出尽可能的可能性。抓住变量,由于题目要求,当A链表和B链表相等时,直接返回B链表,所以不用考虑这个问题。

  1. $node = array(
  2. "nameid"=>"",
  3. "shoolid"=>" ",
  4. "depid"=>" ",
  5. "start"=>" ",
  6. "end"=>" "
  7. );
  8. /*
  9. 现在上面数据,有的数据存在A链表里面,有的存在B链表里面,如果都没有,用A链表的数据节点来代替。
  10. 开始第一次完成的时候,想了一个很蛋痛的方式,还用到arra_diff()函数用这个链表作差。后来仔细思考了一下。
  11. */
  12. //$data 表示B链表
  13. //$time 表示A链表
  14. //这里为了节约资源,没开第三条链表,而是在B链表中操作,为什么要选一条不确定长度的链表
  15. //看完你就知道为什么了
  16. if(empty($data)) //
  17. {
  18. //申请节点
  19. $data = array();
  20. foreach($time as $value)
  21. {
  22. //将A链表的数据进行需求处理,组成我们需要的节点模式
  23. $array = array("nameid"=>$value["id"],"depid"=>$depid,"schoolid"=>$schoolid,"start"=>"","end"=>"");
  24. array_push($data,$array); //将新节点压进栈
  25. }
  26. }
  27. else if(count($data)<=count($time)) //进行长度对比
  28. {
  29. for($i=0;$i<count($time);$i++) //for循环,不建议在for循环继续动态判断,我这里是偷懒了。
  30. {
  31. if(empty($data[$i]))
  32. {
  33. //如果数据节点空,则构建节点
  34. $array = array("nameid"=>$time[$i]["id"],"depid"=>$depid,"schoolid"=>$schoolid,"start"=>"","end"=>"");
  35. array_push($data,$array);
  36. }
  37. }
  38. }

上面的算法就简单的实习了,将A链表的数据,和B的数据组合。

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

php5.5.12 下调试 SOAP 报错信息

PHP中 HTMLPurifier防XSS攻击

PHP中实现无限级分类

以上就是PHP链表操作简单案例的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行