数据结构之C++实现合并线性表

//归并两个线性表
//已知线性表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++);
        insertElem(Lc,k+1,bj);//因为要把较长的线性表多余的部分全部添加到新列表最后面,因此插入位置为k+1
        k++;

    }
}
 
 

C++内部没有直接求数组长度的函数,要想求数组长度可以用模板定义一个函数:

//使用模板定义一个函数getArrayLen,该函数将返回数组array的长度
template <class T>
int len(T& array)
{
  return (sizeof(array) / sizeof(array[0]));
}

用法:

len(array);





猜你喜欢

转载自blog.csdn.net/miss_dairongrong/article/details/80773160