题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。
思路:首先判断两个链表是否为空,然后利用递归完成合并过程。
核心代码如下:
struct ListNode{
int m_nKey;
ListNode* m_pNext;
};
ListNode* Merge(ListNode* pHead1, ListNode* pHead2){
if(pHead1 == nullptr)
return pHead2;
if(pHead2 == nullptr)
return pHead1;
ListNode* pMergedHead = nullptr;
if(pHead1->m_nKey < pHead2->m_nKey){
pMergedHead = pHead1;
pMergedHead->m_pNext = Merge(pHead1->m_pNext, pHead2);
}
else{
pMergedHead = pHead2;
pMergedHead->m_pNext = Merge(pHead1, pHead2->m_pNext);
}
return pMergedHead;
}