原题链接:数据结构-有序线性表的有序合并
解题思路:
注意事项:
可能出现的错误:
【格式错误】当输入m和n都是0时,应输出一个空行而不是 什么都不输出。
【答案错误】①是否注意到了多组输入?②当输入m和n都是0时,此时线性表c没有元素,应该输出一个空行。在我给出的参考程序中,如果不考虑这一点,且每轮输入不清除上一轮数组c的存储值,调用OutputList函数会输出数组c中下标为0的值。
参考代码:
#include <stdio.h> #define LEN 100 void OutputList(int a[],int n) { int i; for(i=0;i<n-1;i++) { printf("%d ",a[i]); } printf("%d\n",a[i]); } int main() { int a[LEN+5],b[LEN+5],m,n; while(scanf("%d",&m)!=EOF) { int i; for(i=0;i<m;i++) { scanf("%d",&a[i]); } scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&b[i]); } if(m==0 &&n==0) { printf("\n"); continue; } int pa=0,pb=0,pc=0,c[LEN*2+5]; while(pa<m &&pb<n) { if(a[pa]<b[pb]) { c[pc++]=a[pa]; pa++; } else if(b[pb]<a[pa]) { c[pc++]=b[pb]; pb++; } else { c[pc++]=a[pa]; c[pc++]=b[pb]; pa++; pb++; } } if(pa==m) { for(i=pb;i<n;i++) { c[pc++]=b[i]; } } else { for(i=pa;i<m;i++) { c[pc++]=a[i]; } } OutputList(c,m+n); } return 0; }
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复