//如果为了效率的话,我们需要把第k次映射成数组的下标,这样插入,删除的效率会达到O(1)
include[HTML_REMOVED]
include[HTML_REMOVED]
using namespace std;
struct list
{
int data;
int k;
int next;
};
list node[100100];
int newnode(int k,int x)
{
node[k].next=0;
node[k].data=x;
node[k].k=k;
return k;
}
//在链表头添加x
void inserthead(int k,int x)
{
int s=newnode(k,x);
node[s].next=node[0].next;
node[0].next=s;
}
//在第k个位置之后添加
void insert(int k,int x,int _k)
{
int s=newnode(_k,x);
node[s].next=node[k].next;
node[k].next=s;
}
//删除
void del(int k)
{
node[k].next=node[node[k].next].next;
}
//
void showlist(void)
{
int p=0;
while(node[p].next!=0)
{
cout<[HTML_REMOVED]>n;
string s;
int k=0;
for(int i=1;i<=n;i)
{
cin>>s;
if(s==”H”)
{
k;
int x;
cin>>x;
inserthead(k,x);
}
else if(s==”I”)
{
k++;
int _k;
int x;
cin>>_k>>x;
insert(_k,x,k);
}
else
{
int k;
cin>>k;
del(k);
}
}
showlist();
cout<<endl;
return 0;
}