#include<iostream>
struct listNode
{
int m_nValue;
listNode* m_Next;
listNode(int _Value) :m_nValue(_Value){}
};
listNode* merge(listNode* pHead1, listNode* pHead2)
{
if (pHead1 == nullptr)return pHead2;//当链表1短于链表2时,返回链表2剩余的节点
else if (pHead2 == nullptr)return pHead1;//当链表2短于链表1时,返回链表1剩余的节点
listNode* pMergeHead = nullptr;
if (pHead1->m_nValue < pHead2->m_nValue)
{
pMergeHead = pHead1;
pMergeHead->m_Next = merge(pHead1->m_Next, pHead2);//链表1往后移动
}
else
{
pMergeHead = pHead2;
pMergeHead->m_Next = merge(pHead1, pHead2->m_Next);//链表2往后移动
}
return pMergeHead;//返回连接起来
}
面试题25:合并两个排序的链表
最新推荐文章于 2022-05-05 11:46:16 发布