AcWing 826. 单链表
原题链接
简单
作者:
BennJay
,
2024-10-26 16:06:11
,
所有人可见
,
阅读 2
#include <iostream>
using namespace std;
const int N = 100010;
int m;
int e[N], ne[N], head, idx;
void init() //初始化别忘了
{
head = -1;
idx = 0;
}
int main()
{
init();
scanf("%d", &m);
while (m -- )
{
char op[2];
int k, x;
scanf("%s", op);
if (*op == 'H')
{
scanf("%d", &x);
e[idx] = x;
ne[idx] = head;
head = idx ++ ;
}
if (*op == 'D')
{
scanf("%d", &k);
if (!k) //特判 k = 0 相当于去掉头节点
{
head = ne[head];
}
k -- ;
ne[k] = ne[ne[k]];
}
if (*op == 'I')
{
scanf("%d%d", &k, &x);
k -- ; // 注意下标要减去1
e[idx] = x;
ne[idx] = ne[k];
ne[k] = idx ++ ;
}
}
for (int i = head; i != -1; i = ne[i])
{
printf("%d ", e[i]);
}
return 0;
}