用C语言来编写两个线性表合并为一个线性表的程序,初学者,不太会,麻烦高手赐教,谢谢!
题目是这样的:有两个顺序存贮的线性表A(有m个元素)和B(有n个元素),其元素均以从小到大的升序排列,编写一个过程将它们合并成一个线性表C,要求C的元素也是以从小到大的升...
题目是这样的:有两个顺序存贮的线性表A(有m个元素)和B(有n 个元素),其元素均以从小到大的升序排列,编写一个过程将它们合并成一个线性表C,要求C的元素也是以从小到大的升序排列。
挺急用的,希望大家帮帮忙. 展开
挺急用的,希望大家帮帮忙. 展开
2个回答
2013-11-08
展开全部
有很多方法可以实现的哦。仔细想一下么。、
我把几种思路,然后优劣及改进跟你说一下。
一开始的思路:把A、B都丢进C里,然后对C排序。人们一开始想到的总是最懒的办法,往往是最没效率的。
改进:由于A、B是排好序的,先把A丢进C里,再拿B元素一个个往里查找插入。这么做要频繁移动元素,如果线性表不是链表的话,开销很大。
再改进:从A、B中各拿一个元素出来,比较后把小的放进C里,再从刚才拿出元素的那个表里再拿个元素出来,再比较,把小的放进C里,重复这样的操作,直到A、B其中一个中的元素拿完为止,再把还有剩的元素全丢进C里。其中重复操作的部分大致是这样:
while(i<m&&j<n)
{
if(A[i]>B[j])
{
C[k]=B[j];
j=j+1;
}
else
{
C[k]=A[i];
i=i+1;
}
k=k+1;
}
思考:能不能从头部和尾部一起开始上述过程呢?这样一来的话,虽然比较次数没减少,但是循环次数却能减少很多哦。
我把几种思路,然后优劣及改进跟你说一下。
一开始的思路:把A、B都丢进C里,然后对C排序。人们一开始想到的总是最懒的办法,往往是最没效率的。
改进:由于A、B是排好序的,先把A丢进C里,再拿B元素一个个往里查找插入。这么做要频繁移动元素,如果线性表不是链表的话,开销很大。
再改进:从A、B中各拿一个元素出来,比较后把小的放进C里,再从刚才拿出元素的那个表里再拿个元素出来,再比较,把小的放进C里,重复这样的操作,直到A、B其中一个中的元素拿完为止,再把还有剩的元素全丢进C里。其中重复操作的部分大致是这样:
while(i<m&&j<n)
{
if(A[i]>B[j])
{
C[k]=B[j];
j=j+1;
}
else
{
C[k]=A[i];
i=i+1;
}
k=k+1;
}
思考:能不能从头部和尾部一起开始上述过程呢?这样一来的话,虽然比较次数没减少,但是循环次数却能减少很多哦。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
2013-11-08
展开全部
对比这两个表指针指向的值,小的先先写入c中并指针后移,如此循环.直到全部写入.注意不要越界
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询