题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
两个单调递增链表的合并,重点就是找到两个链表中较小的那个节点插入新链表,就可以得到一个合并后有序的新链表。
递归的思想:比较两个链首节点的数据大小,较小的一个节点插入新链表。
递归处理(pHead1->next,pHead2)
否则:递归处理(pHead1,pHead2->next)
struct ListNode
{
int val;
struct ListNode *next;
ListNode(int x)
:val(x), next(NULL)
{}
};
class Solution {
public:
ListNode * Merge(ListNode* pHead1, ListNode* pHead2)
{
ListNode* result = nullptr;
if (pHead1 == nullptr)
{
return pHead2;
}
if (pHead2 == nullptr)
{
return pHead1;
}
if (pHead1->val < pHead2->val)
{
result = pHead1;
result->next = Merge(pHead1->next, pHead2);
}
else
{
result = pHead2;
result->next = Merge(pHead1, pHead2->next);
}
return result;
}
};