您当前的位置:首页 > 计算机 > 编程开发 > C语言

C语言将两个有序顺序表合并成一个有序顺序表

时间:01-03来源:作者:点击数:

这里涉及到数据结构中顺序表的实现、删除、插入、查找等知识,请查看:数据结构 -> 线性表

问题描述:

将两个有序顺序表合并成一个新的有序顺序表,并由函数返回结果顺序表。

问题解答:

算法思想:首先,按顺序不断取下两个顺序表表头较小的结点存入新的顺序表中。然后,看哪个表还有剩余,将剩下的部分加到新的顺序表后面。

本题代码如下:

bool Merge(SeqList A, SeqList B, SeqList &C){
    //合并有序顺序表A与B成为一个新的有序顺序表C
    if(A.length+B.length>C.maxSize)  //大于顺序表的最大长度
        return false;
    int i=0,j=0,k=0;
    while(i<A.length && j<B.length){
        //循环,两两比较,小者存入结果表
        if(A.data[i] < B.data[j])
            C.data[k++] = A.data[i++];
        else
            C.data[k++]=B.data[j++];
    }
    while(i<A.length)  //还剩一个没有比较完的顺序表
        C.data[k++] =A.data[i++];
    while(j<B.length)
        C.data[k++] = B.data[j++];
    C.length=k;
    return true;
}

注,本算法的方法非常典型,需牢固掌握。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门