/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
ListNode* p = NULL;
if(pHead1 == NULL)
{
return pHead2;
}
if(pHead2 == NULL)
{
return pHead1;
}
if(pHead1->val <= pHead2->val)
{
p = pHead1;
p->next = Merge(pHead1->next,pHead2);
}
if(pHead1->val > pHead2->val)
{
p = pHead2;
p->next = Merge(pHead1,pHead2->next);
}
return p;
}
};
思路:既然都是递增的链表,合并之后还是递增的,所以第一步就先判断两个链表的头节点哪个小,然后小的那个链表去除头节点重新生成的链表的头节点和另一个链表比较大小。我觉得后面的重新调用这个函数的方法和快速排序比较相似。