问题
有两顺序表LA 和LB,其元素大小均是按照非递减序列排列的,写一方法将他们合并成一个顺序表LC,要求LC的元素大小也是费递减排列
算法思路
依次扫描LA和LB的元素,比较线性表的LA、LB当前所指的元素大小,将较小的元素值插入到LC,如此直到一个线性表遍历一遍,然后将未完的表余下部分插入到LC。
实现
void SqListMerge(SqList *LA,SqList *LB,SqList *LC)
{
int i=
0,j=
0,k=
0;
int La_Len,Lb_Len;
int La_Elem,Lb_Elem;
La_Len=LA->
length;
Lb_Len=LB->
length;
while(i<La_Len && j<Lb_Len)
{
La_Elem=LA->elem[i];
Lb_Elem=LB->elem[j];
if(La_Elem<Lb_Elem)
{
SqListInsert(LC,++k,La_Elem);
i++;
}
else
{
SqListInsert(LC,++k,Lb_Elem);
j++;
}
}
while(i<La_Len)
{
SqListInsert(LC,++k,LA->elem[i++]);
}
while(j<Lb_Len)
{
SqListInsert(LC,++k,LB->elem[j++]);
}
cout<<LC->
length<<endl;
cout<<k<<endl;
}
源码链接:http://download.csdn.net/detail/qq_28397005/9812967 转载请声明,谢谢
转载请注明原文地址: https://ju.6miu.com/read-667729.html