已有a、b两个链表,每个链表中的结点包括学好、成绩。要求把两个链表合并,按学号升序排列。。 输入 第一行,a、b两个链表元素的数量N、M,用空格隔开。接下来N行是a的数据然后M行是b的数据每行数据由学号和成绩两部分组成 输出 按照学号升序排列的数据 用C++实现
时间: 2024-02-27 20:51:33 浏览: 73
以下是用C++实现的代码:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Node {
int number;
int score;
};
bool cmp(Node a, Node b) {
return a.number < b.number;
}
int main() {
int n, m;
cin >> n >> m;
vector<Node> a(n);
vector<Node> b(m);
for (int i = 0; i < n; i++) {
cin >> a[i].number >> a[i].score;
}
for (int i = 0; i < m; i++) {
cin >> b[i].number >> b[i].score;
}
vector<Node> c(n + m);
merge(a.begin(), a.end(), b.begin(), b.end(), c.begin(), cmp);
for (int i = 0; i < n + m; i++) {
cout << c[i].number << " " << c[i].score << endl;
}
return 0;
}
```
其中,用结构体`Node`表示一个链表结点,`cmp`函数用于按学号升序排列,`merge`函数将两个链表合并,并按照`cmp`函数的顺序排序。最后输出排序后的链表元素即可。
阅读全文