单链表
实现一个单链表,链表初始为空,支持三种操作:
- 向链表头插入一个数;
- 删除第 kk 个插入的数后面的数;
- 在第 kk 个插入的数后插入一个数。
现在要对该链表进行 MM 次操作,进行完所有操作后,从头到尾输出整个链表。
#include <iostream>
using namespace std;
const int N = 100010;
int e[N], ne[N], idx, h = -1;
void add (int x) {
e[idx] = x;
ne[idx] = h;
h = idx++;
}
void remove (int k) {
ne[k] = ne[ne[k]];
}
void add_k (int k, int x) {
e[idx] = x;
ne[idx] = ne[k];
ne[k] = idx++;
}
int main() {
int n;
cin >> n;
while (n--) {
char c;
cin >> c;
if (c == 'H') {
int x;
cin >> x;
add (x);
}
else if (c == 'D') {
int k;
cin >> k;
if (k) remove (k - 1);
else h = ne[h];
}
else {
int k, x;
cin >> k >> x;
add_k (k - 1, x);
}
}
for (int i = h; i != -1; i = ne[i]) cout << e[i] << " ";
return 0;
}

浙公网安备 33010602011771号