165合并两个排序链表
来源:互联网 发布:单片机花贲浇花 编辑:程序博客网 时间:2024/05/19 20:58
将两个排序链表合并为一个新的排序链表
样例
给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。
思路:
跟我们合并两个数组一样,链表1的头结点 和链表2的头节点比较,如果链表1头节点的值大于链表2头接点的值,
那么链表2的头结点为合并链表的头结点,那么链表1的头节点继续和链表2的第二个节点(剩余链表2的头结点)
作比较,但一个链表遍历完之后,如果另外一个链表还没有遍历完,因为链表本来就是排序的,所以让合并链表的
尾巴节点指向未遍历完链表的头结点就可以
举个例子:
链表1: 1,3,5,23,34;
链表2: 2,4,6,8,10;
当遍历之后 链表3:1,2,3,4,8,10 此时链表2已经遍历完,while循环退出,但是剩余链表1还有 23,34
此时 让链表3的尾巴节点10 链接 剩余链表的头节点 23 就可以了
/**
* Definition of ListNode
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param ListNode l1 is the head of the linked list
* @param ListNode l2 is the head of the linked list
* @return: ListNode head of linked list
*/
ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) {
if(l1==NULL)
{
return l2;
}
if(l2==NULL)
{
return l1;
}
ListNode*mh=new ListNode(0);
ListNode*mcurr=mh;
while(l1!=NULL&&l2!=NULL)
{
if(l1->valval)
{
mcurr->next=l1;
l1=l1->next;
}
else
{
mcurr->next=l2;
l2=l2->next;
} mcurr=mcurr->next; if(l1==NULL) { mcurr->next=l2; } if(l2==NULL) { mcurr->next=l1; } } return mh->next;// write your code here}
};
- lintcode-合并两个排序链表 -165
- lintcode 165 合并两个排序链表
- 165合并两个排序链表
- LintCode 165合并两个排序链表
- [Lintcode] #165 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- Android触摸事件派发机制详解与源码分析三(Activity篇)
- 《高性能HTML5》读后整理的Web性能优化内容
- 第三次课堂小结
- 用idea搭建mybatis架构,简单的增删改
- WebStorm使用Babel自动转换ES6代码为ES5代码
- 165合并两个排序链表
- python小白进阶一:如何安装scikit learn库
- Spring框架中的单例模式(源码解读)
- java实现文件的复制
- 更新phonegap2.9打包的dojo开发页面的ios app遇到的问题
- [LeetCode] 61. Rotate List
- libssl.so.10: cannot open shared object file: No such file or directory
- 几种进程间的通信方式
- 适当的时候,用递归取代for循环