struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
class Solution {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
//处理都为空或一个为空情况
if(pHead1==NULL&&pHead2==NULL)
return NULL;
if(pHead1==NULL)
return pHead2;
if(pHead2==NULL)
return pHead1;
ListNode* Head1=pHead1;
ListNode* Head2=pHead2;
ListNode* pNewHead=NULL;
ListNode* pNewTail=NULL;
//初始化新头新尾
if(Head1->val < Head2->val)
{
pNewHead=Head1;
Head1=Head1->next;
}
else
{
pNewHead=Head2;
Head2=pHead2->next;
}
pNewTail=pNewHead;
//连接
while(Head1 && Head2)
{
if(Head1->val < Head2->val)
{
pNewTail->next=Head1;
Head1=Head1->next;
}
else
{
pNewTail->next=Head2;
Head2=Head2->next;
}
pNewTail=pNewTail->next;
}
//一个为空出循环则连接另一个
if(Head1==NULL)
{
pNewTail->next=Head2;
}
else
{
pNewTail->next=Head1;
}
return pNewHead; //返回链表头
}
};
合并两有序链表
最新推荐文章于 2025-01-23 10:27:56 发布