将两个已排序的链表合并成为一个链表。
非递归法:
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode head(-1);
ListNode* temp=&head;
while(l1&&l2){
if(l1->val<l2->val){
temp->next=l1;
l1=l1->next;
}
else{
temp->next=l2;
l2=l2->next;
}
temp=temp->next;
}
if(l1){
temp->next=l1;
}
if(l2)
temp->next=l2;
return head.next;
}
};
递归法:
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if(l1==NULL)
return l2;
if(l2==NULL)
return l1;
ListNode* temp;
if(l1->val<l2->val){
temp=l1;
temp->next=mergeTwoLists(l1->next,l2);
}
else{
temp=l2;
temp->next=mergeTwoLists(l1,l2->next);
}
return temp;
}
};