1.将两个有序递增合并为一个递增有序,且使用原来的空间,合并后无重复元素。
//合并两个递增有序链表
void merge(LinKList &la,LinkList &lb,LinkList &lc)
{
pa=la->next;
pb=lb->next;
lc=pc=la;
while(pa&&pb)
{
if(pa->data<pb->data)
{
pc->next=pa;
pc=pa;
pa=pa->next;
}
else if(pa->data>pb->data)
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
else
{
pc->next=pa;
pc=pa; pa=pa->next;
q=pb->next;
free(pb);
pb=q;
}
}
if(pa)
pc->next=pa;
else
pc->next=pb;
free(lb);
}
2.将两个有序链表合并排序
void merge(LinKList la,LinkList lb,LinkList &lc)
{
pa=la->next;
pb=lb->next;
lc=pc=la;
while(pa&&pb)
{
if(pa->data<pb->data)
{
pc->next=pa;
pc=pa;
pa=pa->next;
}
else
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
}
if(pa!=NULL)
pc->next=pa;
else
pc->next=pb;
}