顺序合并
有两个顺序表LA和LB,其元素均为非递减有序排列,编写一个算法,将它们合并成一个顺序表LC,要求LC也是非递减有序排列。
算法思想:设表LC是一个空表,为使LC也是非递减有序排列,可设两个指针i、j分别指向表LA和LB中的元LA.elem[i]>LB.elem[j],则当前先将LB.elem[j]插入到表LC中,若LA.elem[i]sLB.elem[j],当前先将LA.elem[i]插入到表LC中,如此进行下去,直到其中一个表被扫描完毕,然后再将未扫描完的表中剩余的所有元素放到表LC中。
void merge(SeqList*LA,SeqList*LB,SeqList*LC)
{
i=1;j=1;k=1;
while(i<=LA->length&&j<=LB->length)
if(LA->elem[i]<=LB->elem[j])
{
LC->elem[k++]=LA->elem[i++];
}
else
{
LC->elem[k++]=LB->elem[j++];
}
while(i<=LA->length)
{
LC->elem[k++]=LA->elem[i++];
}
while(j<LB->length)
{
LC->elem[k++]=LB->Elem[j++];
}
LC->length=LA->length+LB->length;
}
网友评论