有序合并顺序表。有顺序表La,Lb,其元素均按从小到大升序排列。编写一个算法,将他们合并为一个顺序表Lc,要求Lc的元素也是从小到大排列void mergelist_sq(SqList La,SqList Lb,SqList &Lc){//两个有序表的归并
int i,j,k;
InitList(Lc);
if(!Lc.elem)exit(OVERFLOW);
i=0;j=0;k=0;
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++];//将La中剩余元素插入到Lc中
while(j<Lb.length)Lc.elem[k++]=Lb.elem[j++];//将Lb中剩余元素插入到Lc中
Lc.length=La.length+Lb.length;
}
因为顺序表La、Lb都已经排好序了,那么要将他们合并成有序表放在Lc中,将La和Lb从他们的初始元素进行比较,谁小就将谁放入到Lc中,同时Lc和放入元素的顺序表都指向下一个元素,然后继续循环。最后肯定会有一个顺序表先为空,那么就把不为空的顺序表中的元素直接复制到表Lc中即可。
温馨提示:答案为网友推荐,仅供参考