合并两个有序链表
/**************************************
***************************************/
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);
}