原题链接:
题解:
套板子即可
代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int e[N], l[N], r[N], head, tal = 1, idx;
void init() {
head = 0, tal = 1;
r[head] = tal;
l[tal] = head;
idx = 2;
}
//在第k个插入的数右侧插入x
void insert(int k,int x) {
e[idx] = x;
l[idx] = k;
r[idx] = r[k];
l[r[k]] = idx;
r[k] = idx++;
}
//删除第k个插入的数
void del(int k) {
r[l[k]] = r[k];
l[r[k]] = l[k];
}
int main() {
int M;cin >> M;
init();
while (M--) {
string op;cin >> op;
int x, k;
if (op == "L") {
cin >> x;
insert(0, x);
}
if (op == "R") {
cin >> x;
insert(l[1], x);
}
if (op == "D") {
cin >> k;
del(k + 1);
}
if (op == "IL") {
cin >> k >> x;
insert(l[k + 1], x);
}
if (op == "IR") {
cin >> k >> x;
insert(k + 1, x);
}
}
for (int i = r[0];i != 1;i = r[i]) cout << e[i] << " ";
}