21、Merge Two Sorted Lists
合并两个排序链表
将两个排序链表合并为一个新的排序链表
样例
给出 1->3->8->11->15->null
,2->null
, 返回 1->2->3->8->11->15->null
。
代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if(!l1)return l2;
if(!l2)return l1;
ListNode l3(0);
ListNode *curr1=l1,*curr2=l2;
ListNode *curr3=&l3;
while(curr1||curr2)
{
if(!curr1)
{
curr3->next=curr2;
return l3.next;
}
if(!curr2)
{
curr3->next=curr1;
return l3.next;
}
if(curr1->val>curr2->val)
{
curr3->next=curr2;
curr2=curr2->next;
curr3=curr3->next;
}
else
{
curr3->next=curr1;
curr1=curr1->next;
curr3=curr3->next;
}
}
return l3.next;
}
};