[PHP] 算法-合并两个有序链表为一个有序链表的PH…
2018-09-10 00:56:35来源:博客园 阅读 ()
合并两个有序的链表为一个有序的链表: 类似归并排序中合并两个数组的部分 1.遍历链表1和链表2,比较链表1和2中的元素大小 2.如果链表1结点大于链表2的结点,该结点放入第三方链表 3.链表1往下走一步,反之亦如此 4.当两个链表中有一个结束了以后,另一个链表就可以全部放进第三方链表了 list3 while list1!=null list2!=null if list1->data >= list2->data list3->next=list1 list3=list1 //当前指针后移 list1=list1->next //链表1走一步 else list3->next=list2 list3=list2 list2=list2->next if list1!=null list3->next=list1 if list2!=null list3->next=list2
$linkList=new Node(); $linkList->next=null; $temp=$linkList; for($i=1;$i<=10;$i+=2){ $node=new Node(); $node->data=$i; $node->next=null; $temp->next=$node; $temp=$node; } //第二个有序的链表 $list2=new Node(); $temp=$list2; for($i=2;$i<=10;$i+=2){ $node=new Node(); $node->data=$i; $node->next=null; $temp->next=$node; $temp=$node; } //合并两个链表 $newlist=new Node(); $list1=$linkList->next;//跳过头结点 $list2=$list2->next; $list3=$newlist;//一定要赋予给这个临时结点,否则新结点前移的时候就会被覆盖 while($list1!=null && $list2!=null){ if($list1->data<=$list2->data){ $list3->next=$list1;//新链表指向链表1结点 $list3=$list1;//新链表当前结点往前移动 $list1=$list1->next;//链表1往前移动 }else{ $list3->next=$list2; $list3=$list2; $list2=$list2->next; } } if($list1!=null){ $list3->next=$list1; } if($list2!=null){ $list3->next=$list2; } var_dump($newlist);
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- PHP写UltraEdit插件脚本实现方法 2020-03-29
- php 带逗号千位符数字的处理方法 2020-03-28
- PHP三元运算符的结合性介绍 2020-03-28
- PHP静态延迟绑定和普通静态效率的对比 2020-03-28
- 基于php流程控制语句和循环控制语句 2020-03-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash