合成算法
这个是基于单向链式线性表合成的
void MergeList_L(LinkList La,LinkList Lb,LinkList *Lc)
{
Lnode *pa,*pb,*pc;
pa=La->next;
pb=Lb->next;
*Lc=La;
pc=*Lc;
Printf_List(pc);
while(pa&&pb)
{
if((pa->data.num)>=(pb->data.num))
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
else
{
pc->next=pa;
pc=pa;
pa=pa->next;
}
}
if(pa)
{
pc->next=pa;
}
else
{
pc->next=pb;
}
free(Lb);
printf("两表合并完成\n");
}
//链式线性表的打印函数
int main()
{
LinkList pa,pb,pc;
CreateList_R(&pa,3);
CreateList_R(&pb,6);
Printf_List(pa);
Printf_List(pb);
MergeList_L(pa,pb,&pc);
Printf_List(pc);
}
这里面主要是定义了三个指针,当然还有一个指针传参的方式,定义了一个二级指针,
while(pa&&pb)
{
if((pa->data.num)>=(pb->data.num))
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
else
{
pc->next=pa;
pc=pa;
pa=pa->next;
}
}
if(pa)
{
pc->next=pa;
}
else
{
pc->next=pb;
}
这里面就是将一个较小的值放入Lc线性表中,当一个线性表完的时候将另一个接在后面即可。