参考代码:

#include <stdio.h>
#include <stdlib.h>

typedef struct Node1{
   int number;
   int grade;
   struct Node1*next;
} Node1;

typedef struct Node2{
   int number;
   int grade;
   struct Node2*next;
} Node2;

typedef struct List1{
   Node1* head;
   Node1* tail;
} List1;

typedef struct List2{
   Node2* head;
   Node2* tail;
} List2;
void add1(List1* pList,int number,int grade);
void add2(List2* pList,int number,int grade);
int main() {
   int n,m,i,cnt;
   int number,grade;
   scanf("%d %d",&m,&n);
   int array[m+n];
   List1 list1;
   list1.head = NULL;
   list1.tail = NULL;
   for (i = 0,cnt = 0; i < m; i++,cnt++) {
       scanf("%d %d", &number, &grade);
       array[cnt] = number;
       add1(&list1, number, grade);
   }
   List2 list2;
   list2.head = NULL;
   list2.tail = NULL;
   for (i = 0; i < n; i++,cnt++) {
       scanf("%d %d", &number, &grade);
       array[cnt] = number;
       add2(&list2, number, grade);
   }
   for(i = 0;i < m+n;i++){
       for(int j = i+1;j < m+n;j++){
           int tmp;
           if(array[i] > array[j]) {
               tmp = array[i];
               array[i] = array[j];
               array[j] = tmp;
           }
       }
   }
   for(i = 0;i < m+n;i++){
       Node1 *p;
       for(p = list1.head;p;p = p->next){
           if(p->number == array[i]) {
               printf("%d %d\n", p->number, p->grade);
               break;
           }
       }
       Node2 *q;
       for(q = list2.head;q;q = q->next){
           if(q->number == array[i]){
               printf("%d %d\n",q->number,q->grade);
               break;
           }
       }
   }
   return 0;
}

void add1(List1* pList,int number,int grade){
   Node1 *p = (Node1*)malloc(sizeof(Node1));
   p->number = number;
   p->grade = grade;
   p->next = NULL;
   pList->tail= pList->head;
   if(pList->head){
       while(pList->tail->next){
           pList->tail = pList->tail->next;
       }
       pList->tail->next = p;
   }
   else{
       pList->head = p;
   }
}

void add2(List2* pList,int number,int grade){
   Node2 *p = (Node2*)malloc(sizeof(Node2));
   p->number = number;
   p->grade = grade;
   p->next = NULL;
   pList->tail = pList->head;
   if(pList->head){
       while(pList->tail->next){
           pList->tail = pList->tail->next;
       }
       pList->tail->next = p;
   }
   else{
       pList->head = p;
   }
}

点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论