数据结构之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++);
        
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值