Description:
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
Example:
Input: 1->2->4, 1->3->4 Output: 1->1->2->3->4->4
合并两个排好序的连边并返回这个新的链表
新的链表应该由两个链表的头部共同组成
算法思路:
新的链表也应该是从小到大的,故更小的结点会先放入新的链表
我们采用递归的方式,每一个比较两个链表的结点的值的大小,然后返回不同的链表结点
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
if(!l1)
return l2; //注意不是返回NULL
if(!l2)
return l1;
if(l1->val<l2->val)
{
struct ListNode *p=l1;
p->next=mergeTwoLists(l1->next,l2);
return p; //递归结束后的return不要忘记
}
else
{
struct ListNode *p=l2;
p->next=mergeTwoLists(l1,l2->next);
return p;
}
}