- 1:题目
- 2:代码实现
#includeusing namespace std; const int N=1000010; int m; int e[N],l[N],r[N],idx; void init() { r[0]=1,l[1]=0; idx=2; } //在k结点右边插入一个x void add(int k,int x) { e[idx]=x; r[idx]=r[k]; l[idx]=k; l[r[k]]=idx; r[k]=idx++; } void remove(int k) { r[l[k]]=r[k]; l[r[k]]=l[k]; } int main() { int m; cin>> m; init(); while (m -- ){ string op; int k,x; cin>> op; if(op=="L") { cin>> x; add(0,x); //0 对称美 最上面最下面不带数组,中间两个带数组。 } else if(op=="R") { cin>> x; add(l[1],x); //l[1] } else if(op=="D") { cin >> k; remove(k+1); } else if(op=="IL") { cin >> k>> x; add(l[k+1],x);// l[k+1] } else { cin >>k>> x; add(k+1,x);//k +1 } } for(int i=r[0];i!=1;i=r[i])cout << e[i]<< ' '; cout << endl; return 0; }



