题目描述
已有a、b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。
输入
第一行,a、b两个链表元素的数量N、M,用空格隔开。 接下来N行是a的数据 然后M行是b的数据 每行数据由学号和成绩两部分组成
输出
按照学号升序排列的数据
样例输入 Copy
2 3
5 100
6 89
3 82
4 95
2 10
样例输出 Copy
2 10
3 82
4 95
5 100
6 89
代码
#include<stdio.h>
#include<algorithm>
using namespace std;
const int maxn = 1e5 + 10;
struct Node {
int sno;
int score;
} node[maxn];
bool cmp(Node n1, Node n2) {
return n1.sno < n2.sno;
}
int main() {
int n, m;
scanf("%d%d", &n, &m);
for (int i = 0; i < m + n; i++) {
scanf("%d%d", &node[i].sno, &node[i].score);
}
sort(node, node + m + n, cmp);
for (int i = 0; i < m + n; i++) {
printf("%d %d\n", node[i].sno, node[i].score);
}
return 0;
}