AcWing 826. 单链表
原题链接
简单
作者:
月亮_7
,
2024-03-30 09:46:35
,
所有人可见
,
阅读 1
#include <iostream>
using namespace std;
const int N=100010;
int head,idx,e[N],ne[N];
//head表示头结点的下标
//e[i]表示节点i的值
//ne[i]表示节点i的指针是多少
//idx存储当前已经用到了哪个点
void init()
{
head=-1;
idx=0;
}
void add_to_head(int x)
{
e[idx]=x;
ne[idx]=head;
head=idx;
idx++;
}
//第k个数后米添加
void add(int k,int x)
{
e[idx]=x;
ne[idx]=ne[k];
ne[k]=idx;
idx++;
}
//删除第k个数后面的
void remove(int k)
{
if(k==-1)//删除头节点
head=ne[head];
else
ne[k]=ne[ne[k]];
}
int main()
{
int n;
cin >>n;
init();
while(n--)
{
char c;
cin>> c;
if(c=='H')
{
int x;
cin >> x;
add_to_head(x);
}
else if(c=='D')
{
int k;
cin >> k;
remove(k-1);
}else if(c=='I')
{
int k, x;
cin >> k >> x;
add(k-1,x);
}
}
for(int i=head;i!=-1;i=ne[i])
{
cout << e[i] << ' ';
}
return 0;
}