//归并两个线性表
//已知线性表La和Lb中的数据元素按值非递减排列
//归并La和Lb得到的新线性表Lc,Lc的数据元素也按值非递减排列
void mergeList(SqList La,SqList Lb,SqList &Lc){
initList(Lc);
int i=1;
int j=1;
//i,j分别指向La,Lb
int k=0;
int La_len=getLength(La);//4
int Lb_len=getLength(Lb);//7
while(i<=La_len&&j<=Lb_len){//La和Lb均非空
int ai=getElem(La,i);
int bj=getElem(Lb,j);
if(ai<=bj){
insertElem(Lc,++k,ai);
insertElem(Lc,++k,bj);
i++;
j++;
}else{
insertElem(Lc,++k,bj);
insertElem(Lc,++k,ai);
i++;
j++;
}
}
while(i<=La_len){
int ai=getElem(La,i++);
insertElem(Lc,k+1,ai);//因为要把较长的线性表多余的部分全部添加到新列表最后面,因此插入位置为k+1
k++;
}
while(j<=Lb_len){
int bj=getElem(Lb,j++);
数据结构之C++实现合并线性表
最新推荐文章于 2023-04-01 12:49:13 发布