用c++实现:输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入一个正整数 n(0<n<=9)和一组(n个)升序的整数,建立单向链表,再输入一个整数 x,把 x 插入到这组数据中,使该组数据仍然有序。size=6:1 2 3 4 5 7 size=5:-10 1 2 5 7 size=4:1 2 4 100 size=6:1 2 4 4 5 7
时间: 2023-06-18 22:01:59 浏览: 185
以下是 C++ 代码实现:
```cpp
#include <iostream>
using namespace std;
struct Node {
int val;
Node* next;
Node(int v) : val(v), next(nullptr) {}
};
void insert(Node* head, int x) {
Node* cur = head;
while (cur->next && cur->next->val < x) {
cur = cur->next;
}
Node* node = new Node(x);
node->next = cur->next;
cur->next = node;
}
void print(Node* head) {
Node* cur = head->next;
while (cur) {
cout << cur->val << " ";
cur = cur->next;
}
cout << endl;
}
void destroy(Node* head) {
Node* cur = head;
while (cur) {
Node* tmp = cur;
cur = cur->next;
delete tmp;
}
}
int main() {
int repeat;
cin >> repeat;
while (repeat--) {
int n;
cin >> n;
Node* head = new Node(0);
for (int i = 0; i < n; i++) {
int x;
cin >> x;
insert(head, x);
}
int x;
cin >> x;
insert(head, x);
print(head);
destroy(head);
}
return 0;
}
```
输入格式为:第一行一个正整数 repeat,表示测试用例的组数;每组测试用例的输入格式为:第一行一个正整数 n,表示链表中已有元素的个数;第二行 n 个升序的整数,表示链表中已有的元素;第三行一个整数 x,表示要插入的元素。
输出格式为:插入 x 后的链表元素,每个元素之间用空格隔开。
阅读全文