【问题描述】 两个非降序链表的并集,例如将链表1->2->3 和 2->3->5 并为 1->2->3->5,只能输出结果,不能修改两个链表的数据。 【输入形式】 第一行为第一个链表的各结点值,以空格分隔。 第二行为第二个链表的各结点值,以空格分隔。 【输出形式】 合并好的链表,以非降序排列,值与值之间以空格分隔。 【样例输入】 4 7 10 34 1 4 6 29 34 34 52 【样例输出】 1 4 6 7 10 29 34 52
时间: 2023-05-29 10:07:57 浏览: 97
实现对两个线形链表的合并,并输出其结果
```python
# Python 3
list1 = list(map(int, input().split()))
list2 = list(map(int, input().split()))
# 合并两个有序列表
res = []
i, j = 0, 0
while i < len(list1) and j < len(list2):
if list1[i] <= list2[j]:
res.append(list1[i])
i += 1
else:
res.append(list2[j])
j += 1
res += list1[i:]
res += list2[j:]
# 输出合并后的列表
print(' '.join(map(str, res)))
```
```cpp
// C++
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> list1, list2;
int temp;
while (cin >> temp) list1.push_back(temp);
while (cin >> temp) list2.push_back(temp);
// 合并两个有序列表
vector<int> res;
int i = 0, j = 0;
while (i < list1.size() && j < list2.size()) {
if (list1[i] <= list2[j]) {
res.push_back(list1[i]);
i++;
} else {
res.push_back(list2[j]);
j++;
}
}
while (i < list1.size()) {
res.push_back(list1[i]);
i++;
}
while (j < list2.size()) {
res.push_back(list2[j]);
j++;
}
// 输出合并后的列表
for (int k = 0; k < res.size(); k++) {
cout << res[k] << " ";
}
cout << endl;
return 0;
}
```
阅读全文