该问题可以看做一个递归问题,首先比较两个链表的首节点,然后选择比较小的一个,接着把剩下的再作为一个整体。。。
/**
* 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 == NULL)//递归程序中最关键的就是终止条件
return l2;
else if(l2 == NULL)
return l1;
ListNode* pMergedHead = NULL;
if(l1 -> val < l2 -> val){
pMergedHead = l1;
pMergedHead -> next = mergeTwoLists(l1 -> next, l2);
}
else{
pMergedHead = l2;
pMergedHead -> next = mergeTwoLists(l1, l2 -> next);
}
return pMergedHead;
}
};