#6016. 循环双链表头插法
循环双链表头插法
题目描述
已知以下程序:
#include <bits/stdc++.h>
using namespace std;
struct Node {
int val;
Node *nxt, *pre;
};
Node *head;
int tot;
// 可以使用 insertNode 函数和 insertVal 函数,本题省略
// ...
int main() {
// 初始化头节点
head = new Node;
head->nxt = head;
head->pre = head;
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
int v;
cin >> v;
// 请在此处补充头插法的代码
// ...
}
// 正序输出所有节点的数据域
Node *t = head->nxt;
for (int i = 1; i <= n; i++) {
cout << t->val << " ";
t = t->nxt;
}
t = head->nxt;
for (int i = 1; i <= n; i++) {
Node *q = t->nxt;
delete t;
t = q;
}
delete head;
return 0;
}
程序的作用是:
- 输入 个正整数
v,使用头插法把v插入到链表中。 - 最后再正序输出所有节点的数据域。
关于 insertNode 函数和 insertVal 函数:
- 此题的测试程序中没有提供这两个函数,如果需要使用可以去其他题目复制。
你的任务是:
- 补充头插法缺失的代码。
题型说明
解题时可以把题目提供的程序复制到编译器中,编写对应所缺的内容,测试通过后只需要提交缺失的代码,如果提交完整程序反而会 WA。
格式要求
输入格式
第一行输入一个整数 。
接下来一行输入 个不超过 的正整数。
输出格式
输出 个整数。
样例
5
1 2 3 4 5
5 4 3 2 1