原题链接:数据结构-有序线性表的有序合并
解题思路:
①:输入线性表LA,LB
②:据算法:首先i=0指向LA第一个元素,j=0指向LB第一个元素,k=0指向LC第一个元素
③:从LA,LB中第一个元素开始比较,若LA[i]<=LB[j] ,则LC[k]=LA[i],同时i++,k++(i,k指针后移)
若LA[i]>LB[j] ,则LC[k]=LB[j],同时j++,k++(j,k指针后移)
④:以上比较,插入操作当LA或者LB有一个遍历完结束
⑤:把未遍历完的表(LA或LB)中未遍历的部分加到LC最后一个元素后面
⑥:按要求输出LC
注意事项:
题目中:m大于等于0 n大于等于0,当输入的m和n 都为0 时,不能有任何输出,直接换行合并下一组数据
在代码中加了排序,怕输入数据不是非递减
参考代码:
#include<stdio.h> #include<malloc.h> int * creat_LA(int m); int * creat_LB(int n); int * creat_LC(int *LA,int *LB,int x,int m,int n); void output_LC(int *LC,int x); void sort_(int *L,int d); /*在代码中加了排序,怕输入数据不是非递减*/ int main() { int *LA=NULL,*LB=NULL,*LC=NULL; int m,n; while(scanf("%d",&m)!=EOF) { LA=creat_LA(m); scanf("%d",&n); LB=creat_LB(n); LC=creat_LC(LA,LB,m+n,m,n); if(m==0&&n==0) printf("\n"); else output_LC(LC,n+m); free(LA); free(LB); free(LC); } return 0; } /*---------------------------------------------*/ int * creat_LA(int m) { int *la=(int *)malloc(m*sizeof(int)); for(int i=0;i<m;i++) scanf("%d",&la[i]); sort_(la,m); return la; } /*---------------------------------------------*/ int * creat_LB(int n) { int *lb=(int *)malloc(n*sizeof(int)); for(int i=0;i<n;i++) scanf("%d",&lb[i]); sort_(lb,n); return lb; } /*---------------------------------------------*/ int * creat_LC(int *LA,int *LB,int x,int m,int n) { int *lc=(int *)malloc(x*sizeof(int)); int i=0,j=0,k=0; while(i<m&&j<n) if(LA[i]<=LB[j]) lc[k++]=LA[i++]; else lc[k++]=LB[j++]; while(i<m) lc[k++]=LA[i++]; while(j<n) lc[k++]=LB[j++]; return lc; } /*---------------------------------------------*/ void output_LC(int *LC,int x) { for(int i=0;i<x-1;i++) printf("%d ",LC[i]); printf("%d\n",LC[x-1]); } /*---------------------------------------------*/ void sort_(int *L,int d) { int min,term; for(int i=0;i<d;i++) { min=i; for(int j=i;j<d;j++) { if(L[j]<L[min]) min=j; } term=L[i]; L[i]=L[min]; L[min]=term; } }
别忘点赞哦-.-!
0.0分
7 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复