数据结构之两顺序表合并

    xiaoxiao2021-04-12  32

    问题

    有两顺序表LA 和LB,其元素大小均是按照非递减序列排列的,写一方法将他们合并成一个顺序表LC,要求LC的元素大小也是费递减排列

    算法思路

    依次扫描LA和LB的元素,比较线性表的LA、LB当前所指的元素大小,将较小的元素值插入到LC,如此直到一个线性表遍历一遍,然后将未完的表余下部分插入到LC。

    实现

    void SqListMerge(SqList *LA,SqList *LB,SqList *LC) { int i=0,j=0,k=0; int La_Len,Lb_Len; int La_Elem,Lb_Elem; La_Len=LA->length; //获取LA的元素长度 Lb_Len=LB->length; //获取LB的元素长度 while(i<La_Len && j<Lb_Len) { La_Elem=LA->elem[i]; Lb_Elem=LB->elem[j]; if(La_Elem<Lb_Elem) //将元素较小的插入到LC { SqListInsert(LC,++k,La_Elem); //LA的元素小则插入LC i++; } else { SqListInsert(LC,++k,Lb_Elem); //LB的元素小则插入LC j++; } } //对于尚未遍历一遍的表进行插入 while(i<La_Len) { SqListInsert(LC,++k,LA->elem[i++]); } while(j<Lb_Len) { SqListInsert(LC,++k,LB->elem[j++]); } cout<<LC->length<<endl; cout<<k<<endl; }

    源码链接:http://download.csdn.net/detail/qq_28397005/9812967 转载请声明,谢谢

    转载请注明原文地址: https://ju.6miu.com/read-667729.html

    最新回复(0)