算法2.2数据结构C语言版严蔚敏
程序员文章站
2022-05-22 14:57:44
...
已知线性表la和lb中的数据元素按值非递减有序排列,现要求将la和lb归并为一个新的线性表lc,且lc中的数据元素仍按值非递减有序排列。
/*已知线性表La和Lb中的数据元素按值非递减排列
归并La和Lb得到新的线性表Lc,Lc的数据元素也按值非递减排列 */
void MergeList(List La,List Lb,List &Lc){
InitList(Lc); //构造一个空的线性表Lc
i = j = 1; k = 0; //指针i、j分别指向La和Lb中的元素
La_len = ListLength(La); Lb_len = ListLength(Lb); //求线性表的长度
while((i <= La_len) && (j <= Lb_len)){ //La和Lb均为非空
GetElem(La,i,ai); GetELem(Lb,j,bj); //获取La中第i个位置的元素并赋值给ai,bi同理
if(ai <= bj) {ListInsert(Lc,++k,ai);++i;} //添加小的一个到Lc中,并且将对应的指针+1
else{ListInsert(Lc,++k,bj); ++j}
}
while(i <= La_len){ //情况1:Lb的都填进去了,还剩La的
GetElem(La,i++,ai);ListInsert(Lc,++k,ai);
}
while(j <= Lb_len){ //情况2:La的都填进去了,还剩Lb的
GetElem(Lb,j++,bj);ListInsert(Lc,++k,bj);
}
上一篇: 支付宝怎么添加杭州地铁乘车码?