#include<iostream>
using namespace std;
const int N = 1e5 + 10;
int idx,be[N],ne[N],e[N];
int m,a,b;
string c;
void init (){
be[1] = 0;
ne[0] = 1;
idx = 2;
}
void ins_l(int x){
e[idx] = x;
ne[idx] = ne[0];
be[ne[0]] = idx;
ne[0] = idx;
be[idx] = 0;//注意顺序
idx++;
}
void ins_r(int x){
e[idx] = x;
ne[be[1]] = idx;
be[1] = idx;
ne[idx] = 1;
be[idx] = be[1];
idx++;
}
void remove(int k){
be[ne[k]] = be[k];
ne[be[k]] = ne[k];
}
void ir(int k,int x){
e[idx] = x;
ne[idx] = ne[k];
ne[k] = idx;
be[ne[k]] = idx;
be[idx] = k;
idx++;
}
void il(int k,int x){
e[idx] = x;
ne[be[k]] = idx;
be[idx] = be[k];
be[k] = idx;
ne[idx] = k;
idx++;
}
int main(){
init();
cin >> m;
while(m--){
cin >> c;
cout << c << endl;
if(c == "R"){
cin >> a;
ins_r(a);
}else if(c == "L"){
cin >> a;
ins_l(a);
}else if(c == "D"){
cin >> a;
remove(a + 1);
}else if(c == "IR"){
cin >> a >> b;
ir(a + 1,b);
}else{
cin >> a >> b;
il(a + 1,b);
}
for(int i = ne[0];i != 1;i = ne[i]) cout << e[i] << ' ';
cout << endl;
}
for(int i = ne[0];i != 1;i = ne[i]) cout << e[i] << ' ';
return 0;
}
为什么我调试的时候那个“D 1”指令并没有把7删除,链表输出还是有7