将俩个线性表归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列。

例如:

LA = (3,5,  8,11)  ,LB = (2,6,8,9,11,15,20)

LC = (2,3,5,6,8,8,9,11,11,15,20,)

LC中的数据元素或是LA中的数据元素,或是LB中的数据元素,则只要先设LC为空表,然后将LA或LB中的元素逐个插入到LC中即可。为使LC中元素按值非递减有序排列,可设俩个指针i和j分别指向LA和LB某个元素,若设i当前所指的元素为a,j当前所指的元素为b,则当前应插入到LC中的元素c为,当a<=b 时,c = a;当a>b时,c= b;显然,指针i和j的初值均为1,在所指元素插入LC之后,LA或LB中顺序后移。

void MergeList(List La, List Lb, List &Lc)
{
    InitList(Lc);
    i = j = 1;
    k = 0;
    len_la = listlength(la);
    len_lb = listlength(lb);
    while((i<=len_la)&&(j<=len_lb))
    {
        GetElem(La, i, ai);
        GetElem(Lb, j, bj);
        if(ai <= bj)
            {
                ListInsert(Lc, ++k, ai);
                ++i;
            }
        else
            {
                ListInsert(Lc, ++k, bj);
                ++j;
            }
    }
    while(i<=len_la)
    {
        GetElem(La, i++, ai);
        ListInsert(Lc, ++k, ai);
    }
    while(j<=llen_lb)
    {
        GetElem(Lb, j++, bj);
        ListInsert(Lc, ++k, bj);
    }
}

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值