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 发布
本文介绍了一种用于合并两个已排序链表的算法实现。通过比较两个链表节点的值,将较小值节点依次链接到新的链表中,最终形成一个有序的新链表。该算法考虑了各种边界情况,并提供了完整的C++代码示例。

514

被折叠的 条评论
为什么被折叠?



