//将线性表Lb中元素插入到La中,使得La中元素从小到大
void MergeList(struct list *La, struct list *Lb)
{
//int j=0,i=0,m=0,n;
La->elem=(elemtype *)realloc(La->elem,(La->maxsize+Lb->maxsize)*sizeof(elemtype));
//int LaNum = La->size-1;
int flag = 0; //插入位置标记
int LbNum = Lb->size-1; //插入数据个数
La->maxsize=La->maxsize+Lb->maxsize;
while (LbNum>=0)
{
flag = 0; //初始化
for (int i=0; i<La->size; ++i)//寻找插入位置
{
if (Lb->elem[LbNum] <= La->elem[i]) //找到,跳出循环
{
break;
}
++flag;
}
for (int j=La->size; j>=flag; --j) //插入位置后的数据后移
{
La->elem[j] = La->elem[j-1];
}
La->elem[flag] = Lb->elem[LbNum]; //将数据插入到对应位置
--LbNum; //插入数据个数递减
++La->size; //线性表个数加1
}
for (int i=0; i<La->size; ++i)//打印排序后的线性表
{
printf("%4d", La->elem[i]);
}
//n=La->size;
//La->size=La->size+Lb->size;
/* for(i;i<La->size;i++){
if(i==n+j){
for(j;j<Lb->size;j++){
La->elem[i++]=Lb->elem[j];
}
break;
}
if(La->elem>=Lb->elem[j]){
insertposlist(La,i+1,Lb->elem[j]);
j++;
}
}
// 打印La中的元素
for(m;m<La->size;m++){
printf("%d ",La->elem[m]);
}*/
return ;
}
在楼主的基础上改进,程序基本能够实现楼主功能。代码仅供参考 |