一、题干:acwing单链表
![](https://i-blog.csdnimg.cn/blog_migrate/1143acef9f642a1f250d5890a43a9675.png)
二、代码实现
#include<iostream>
using namespace std;
const int N = 1e5 + 10;
int n[N],ne[N],head,idx;
//初始化
void init()
{
head = -1 ,idx = 0;
}
//头插法,插入元素x
void add_head(int x)
{
n[idx] = x;
ne[idx] = head;
head = idx;
idx ++;
}
//删除K结点后一个结点
void remove_after_K(int k)
{
ne[k] = ne[ne[k]];
}
//在k结点之后插入一个新元素
void add_K(int k,int x)
{
n[idx] = x;
ne[idx] = ne[k];
ne[k] = idx;
idx ++;
}
int main()
{
init();
int m;
cin>>m;
while(m--)
{
char op;
cin>>op;
if(op == 'H')
{
int x;
cin>>x;
add_head(x);
}
else if(op == 'D')
{
int k;
cin>>k;
if(k == 0) head = ne[head];
else remove_after_K(k-1);
}
else if(op == 'I')
{
int k,x;
cin>>k>>x;
add_K(k-1,x);
}
}
for(int i = head ; i != -1 ; i = ne[i])
{
cout<<n[i]<<' ';
}
return 0;
}