165合并两个排序链表
2017-07-10 20:27
288 查看
将两个排序链表合并为一个新的排序链表
样例给出 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)
- lintcode-合并两个排序链表 -165
- lintcode 165 合并两个排序链表
- LintCode 165合并两个排序链表
- LintCode-剑指Offer-(165)合并两个排序链表
- 165 - 合并两个排序链表
- LintCode_165_合并两个排序链表
- 16、合并两个排序的链表
- lintcode-合并两个排序链表
- 题目1519:合并两个排序的链表
- 【剑指offer系列】 合并两个排序的链表___17
- 剑指offer-17:合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 题目1519:合并两个排序的链表
- 剑指offer——合并两个排序的链表
- 剑指 Offer —16—合并两个排序的链表
- 剑指Offer:反转链表、合并两个排序的链表
- [剑指offer]合并两个排序的链表