原题链接:[编程入门]链表合并
解题思路:
注意事项:
参考代码:
#include<stdio.h> #include<stdlib.h> typedef struct node { int xh,score; struct node *next; }Node,*LinkList; void Initnode(LinkList *L) { *L=(LinkList)malloc(sizeof(Node)); (*L)->xh=NULL; (*L)->score=NULL; (*L)->next=NULL; } void created(LinkList *L,int n) { Node *r,*s; r=(*L); while(n--) { (s)=(LinkList)malloc(sizeof(Node)); scanf("%d%d",&(s->xh),&(s->score)); r->next=s; r=s; } r->next=NULL; } Node* changed(Node* L1,Node* L2) { Node *r; r=L1; while(r->next!=NULL) { r=r->next; } r->next=L2->next; return L1; } void print(Node *L1,int n,int m) { int a[n+m],e,l,p; p=n+m; l=0; Node *r,*r1; r=L1->next; for(int i=0;i<n+m;i++) { a[i]=r->xh; r=r->next; } for(int j=0;j<n+m;j++) { for(int k=j;k<n+m;k++) { if(a[j]>a[k]) { e=a[j]; a[j]=a[k]; a[k]=e; } } } r1=L1->next; while(p) { if(r1->xh==a[l]) { printf("%d %d\n",r1->xh,r1->score); p--; l++; r1=L1; } r1=r1->next; } } int main() { int n,m; LinkList L1,L2; Initnode(&L1); Initnode(&L2); scanf("%d%d",&n,&m); created(&L1,n); created(&L2,m); L1=changed(L1,L2); print(L1,n,m); free(L1); free(L2); return 0; }
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复