PHP链表操作简单示例

yipeiwu_com7年前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数据结构与算法教程》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

相关文章

PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function

1、错误类型:PHP致命错误 Error type: PHP Fatal error Fatal error: Cannot redeclare (a) (previously decl...

随时给自己贴的图片加文字的php水印

随时给自己贴的图片加文字  <?  Header( "Content-type: image/jpeg");  function&...

PHP 抽象方法与抽象类abstract关键字介绍及应用

PHP 抽象方法与抽象类 abstract 关键字 abstract 关键字用于定义抽象方法与抽象类。 抽象方法 抽象方法指没有方法体的方法,具体就是在方法声明的时候没有 {} 括弧以...

在WordPress中使用PHP脚本来判断访客来自什么国家

区分访客国家有什么用? 这里是几个我利用该功能的例子. 1.区分网站功能 这个博客有翻译文章的功能, 这是为了方便海外访客阅读文章, 但对中国人显得十分多余. 所以我通过 IP...

PHP 多进程与信号中断实现多任务常驻内存管理实例方法

PHP 多进程与信号中断实现多任务常驻内存管理实例方法

本文章基于 pcntl 扩展做的多进程测试。 进程调度策略 父子进程的调度由操作系统来负责,具体先调度子进程还是父进程由系统的调度算法决定,当然可以在父进程加上延时或是调用进程回收函数...