题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路:建立一个新的链表,定义两个指针分别指向两个链表的开头,比较两个值的大小,选取小的接在新链表的后面,然后将该指针后移,进行递归。
注意,当其中一个指针指向NULL,则返回另一个指针。
class Solution {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
if(pHead1==NULL) //若指向空,则返回另一个链表的节点
return pHead2;
else if(pHead2==NULL)
return pHead1;
ListNode *pnewNode=NULL; //定义一个新的链表
if(pHead1->val < pHead2->val)
{
pnewNode=pHead1;
pnewNode->next=Merge(pHead1->next,pHead2); //递归
}
else
{
pnewNode=pHead2;
pnewNode->next=Merge(pHead1,pHead2->next); //递归
}
return pnewNode; //返回新链表
}
};