作业帮 > 综合 > 作业

将有序线性表La={2,4,6,7,9},Lb={1,5,7,8},合并为Lc={1,2,4,5,6,7,7,8,9}.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/17 03:29:32
将有序线性表La={2,4,6,7,9},Lb={1,5,7,8},合并为Lc={1,2,4,5,6,7,7,8,9}.
有没有完整的代码?
这个是算法,不知道对你与没有帮助,这个题目还用到了二路归并排序法,是很经典的一道题哦!
设Lc是一个空表,使用两个指针i,j分别指向La和Lb中的元素,如果La中的元素La-->elem[i]>Lb-->elem[j],则选择Lb中的元素,j和k加一.最后La中的元素有剩余,直接搬到Lc中即可.
void merge(Seqlist *La,Seqlist *Lb,Seqlist *Lc)
{
int i,j,k,l;
i=0;j=0;k=0;
while(ilast&&jlast)
if(La-->elem[i]elem[j])
{Lc-->elem[k]=La-->elem[i];
i++;k++;
}
else
{Lc-->elem[k]=Lb-->elem[i];
j++;k++;
}
while(ilast) /*当La中元素剩余时,将La中剩余元素赋给Lc*/
{Lc-->elem[k]=La-->elem[i];
i++;k++;
}
while(jlast) /*当Lb中元素剩余,将Lb中剩余元素赋给Lc*/
{Lc-->elem[k]=Lb-->elem[j];
j++;k++;
}
Lc-->last=La-->last+Lb-->last+1;
}