合并两个有序链表
/**************************************
***************************************/
typedef struct Node
{
int data;
struct Node* next;
}Node, *LinkList;
void Merge(const LinkList la, const LinkList lb, LinkList &lc)
{
// ,输入参数检测,NULL检测
if(!la) {lc = pb; return;}
if(!lb) {lc = pa; return;}
Node* p;
// 确定最大值在la上, 还是lb上
if(la.data > lb.data)
{
lc = p = la;
la = la->next;
}
else
{
lc = p = lb;
lb = lb->next;
}
while(la&&lb)//只要两个链表都不为空链表
{
if(la.data >= lb.data)
{
p->next = la;
la = la->next;
}
else
{
p->next = lb;
lb = lb->next;
}
p = p->next;
}
// 两个链表至少有一个为空链表,将剩余部分链表直接连接到新链表的尾部
p->next = (la ? la:lb);
}
/**************************************
***************************************/
typedef struct Node
{
int data;
struct Node* next;
}Node, *LinkList;
void Merge(const LinkList la, const LinkList lb, LinkList &lc)
{
// ,输入参数检测,NULL检测
if(!la) {lc = pb; return;}
if(!lb) {lc = pa; return;}
Node* p;
// 确定最大值在la上, 还是lb上
if(la.data > lb.data)
{
lc = p = la;
la = la->next;
}
else
{
lc = p = lb;
lb = lb->next;
}
while(la&&lb)//只要两个链表都不为空链表
{
if(la.data >= lb.data)
{
p->next = la;
la = la->next;
}
else
{
p->next = lb;
lb = lb->next;
}
p = p->next;
}
// 两个链表至少有一个为空链表,将剩余部分链表直接连接到新链表的尾部
p->next = (la ? la:lb);
}
本文详细介绍了如何将两个已排序的链表合并成一个有序链表的过程。
1万+

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



