输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。链表节点定义如下:
struct ListNode
{
int m_nValue;
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_nValue<pHead2->m_nValue)
{
p<ergedHead=pHead1;
pMergedHead->m_pNext=Merge(pHead1->m_pNext,pHead2);
}
else
{
pMergedHead=pHead2;
pMergedHead->m_pNext=Merge(pHead1,pHead2->m_pNext);
}
return pMergedHead;
}
心得:跟现实拉拉链很相似,每次“弹”出一个最小值。