有两个顺序表LA,LB,其元素均为非递减有序排列,编写算法将它们合并成一个顺序表LC,要求LC也是非递减有序排列。

本文介绍了一个C语言函数voidMergeList,用于将两个已排序的序列列表LA和LB合并成一个新的有序列表LC。该函数首先比较两个列表中的元素,并按升序逐个添加到新列表中,直至一个列表遍历完成;随后将另一个未遍历完的列表剩余部分依次加入LC,最终返回一个完整的有序列表。
void MergeList(Seqlist * LA, Seqlist * LB, Seqlist * LC)
{
int i, j, k = 0;
while ((i <= LA->last) && (j <= LB->last))
{
if (LA->elem[i] < LB->elem[j])
{
LC->elem[k] = LA->elem[i];
i++;
k++;
}
else
{
LC->elem[k] = LB->elem[j];
j++;
k++;
}
}
while (i <= LA->last)//多余的直接合并
{
LC->elem[k] = LA->elem[i];
i++;
k++;
}
while (j <= LB->elem[j])
{
LC->elem[k] = LB->elem[j];
j++;
k++;
}
LC->last = LA->last + LB->last;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值