U2T2*1
作者:
疾风劲草
,
2021-06-24 04:00:10
,
所有人可见
,
阅读 298
- 在k左边插入-》在l[k]右边插入
- l[0]=-1,l[1]=0;r[0]=1,r[1]=-1
- idx,e[n],l[n],r[n]//变量设置
#include<iostream>
#include<string>
using namespace std;
const int N=1000000;
int l[N],r[N],e[N],idx=2;
void add(int x,int pos)//在e数组下标pos右边插入
{
e[idx]=x;
r[idx]=r[pos];
l[idx]=pos;
l [r[pos]]=idx;
r[pos]=idx;
idx++;
}
void clear(int pos)//删除e数组下标为pos;
{
l[r[pos]]=l[pos];
r[l[pos]]=r[pos];
}
int main()
{
l[0]=-1,r[0]=1,l[1]=0,r[1]=-1;
int m;
cin>>m;
while(m--)
{
string str;
cin>>str;
if(str=="R")
{
int x;
cin>>x;
add(x,l[1]);
}
if(str=="L")
{
int x;
cin>>x;
add(x,0);
}
if(str=="D")
{
int k;
cin>>k;
clear(k+1);
}
if(str=="IL")
{
int k,x;
cin>>k>>x;
add(x,l[k+1]);
}
if(str=="IR")
{
int k,x;
cin>>k>>x;
add(x,k+1);
}
}
for(int pos=r[0];pos!=1;pos=r[pos])cout<<e[pos]<<" ";
return 0;
}