21.合并两个有序链表
2018-09-27 本文已影响19人
闭门造折
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
思路:
采用递归,每次比较l1->val和l2->val大小
如果有一个为空,则返回另一个
如果l1较小,l1指针往后移动一位,递归与l2继续比较
具体代码
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode* head;
if(l1 == NULL){
return l2;
}
if(l2 == NULL){
return l1;
}
if(l1->val < l2->val){
head = l1;
l1->next = mergeTwoLists(l1->next, l2);
}
else{
head = l2;
l2->next = mergeTwoLists(l1, l2->next);
}
return head;
}