静态链表
#include<bits/stdc++.h>
using namespace std;
int m , head , idx;//head为头指针 idx 为插入的结点索引
const int N = 100010;
int ne[N] , v[N];//ne[]为指针域 v[]为数据域
// 单链表的初始化
void _init()
{
idx = 0;
head = -1;
}
//向头结点后插入纸
void add_head(int x)
{
v[idx] = x;
ne[idx] = head;
head = idx;
idx++;
}
// 移除第k个插入的数后的值
void remove_k (int k)
{
ne[k] = ne[ne[k]];
}
// 向第K个插入的值后插入一个X
void add_k_x (int k , int x)
{
v[idx] = x;
ne[idx] = ne[k];
ne[k] = idx;
idx ++;
}
int main()
{
char ch ;
int k ,x;
cin>>m;
_init();
for (int i = 0 ; i < m ; i ++)
{
cin>>ch>>k;
if (ch == 'H') add_head(k);
else if (ch == 'D')
{
if (!k) head = ne[head];
else remove_k(k-1);
}
else if (ch == 'I')
{
cin>>x;
add_k_x(k-1,x);
}
//cout<<head<<" "<<ne[idx-1]<<" "<<v[idx-1]<<endl;
}
// for (int i = 0 ; i < idx ; i ++)
// {
// int tt = head;
// cout<<v[tt]<<" ";
// tt = ne[tt];
// }
for(int i=head;i!=-1;i=ne[i])
cout<<n[i]<<" ";
return 0;
}