采用数组来替代链表
#include<iostream>
using namespace std;
const int N = 1e5 + 10;
int r[N],l[N],idx,e[N];
void init(){
r[0] = 1;
l[1] = 0;
idx = 2;
}
void insert(int k,int x){
e[idx] = x;
r[idx] = r[k];
l[idx] = k;
l[r[k]] = idx;
r[k] = idx;
idx ++;
}
void move(int k){
r[l[k]] = r[k];
l[r[k]] = l[k];
}
int main(){
int m;
int x,k;
string str;
cin >> m;
init();
while(m --){
cin >> str;
if (str == "R"){
cin >> x;
insert(l[1],x);
}
else if (str == "L"){
cin >> x;
insert(0,x);
}
else if (str == "D"){
cin >> k;
move(k + 1);
}
else if (str == "IL"){
cin >> k >> x;
insert(l[k + 1], x);
}
else if (str == "IR"){
cin >> k >> x;
insert(k + 1, x);
}
}
for (int i = r[0]; i != 1; i = r[i])
cout << e[i] <<" ";
}