合并两个有序的链表为一个有序的链表:
类似归并排序中合并两个数组的部分
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);

最新文章

  1. DCloud与APICloud的对比
  2. FIFO页面置换算法
  3. C# 代码示例_结构/数组/枚举...
  4. java.io.Serializable 序列化问题
  5. Arduino智能小车制作报告
  6. 基因变异(codevs 3194)
  7. Bluez alpha版震撼发布!
  8. ASP.NET网页验证码常用方法
  9. C++中的mutable关键字
  10. jmeter接口测试之登录测试
  11. 微软宣布.NET开发环境将开源 支持Mac OS X和Linux
  12. OAuth及第三方登录
  13. Eclipse导入项目常见问题----facet版本问题04
  14. Linux IPC实践(2) --匿名PIPE
  15. MySQL 深入浅出数据库索引原理(转)
  16. Linux如何修改和查询时区时间
  17. 将NetBIOS名称解析为IP地址的常用方法
  18. 『算法设计_伪代码』贪心算法_最短路径Dijkstra算法
  19. 7 Serial Configuration 理解(三)
  20. python爬虫_简单使用百度OCR解析验证码

热门文章

  1. 甲方安全建设之office365邮箱弱口令检测
  2. noip第23课资料
  3. Springmvc &lt;mvc:cros&gt;和&lt;mvc:intercepters&gt;同时使用时,跨域被拦截了
  4. Redis 基础、高级特性与性能调优
  5. SDWebImage之UIView+WebCache
  6. layui 富文本 图片上传 后端PHP接口
  7. Android开发工程师文集-1 小时学会SQLite
  8. 仿B站项目(3)页面配置
  9. python中实现排序list
  10. Java线程池种类、区别和适用场景