数组模拟单链表
const int N = 1e6 + 10;
// head 表示头节点的下标
// e[i] 表示节点i的值
// ne[i] 表示节点i的next指针是多少
// idx 存储当前已经用到了哪个点
int e[N], idx, ne[N], head;
// 初始化
void init()
{
head = -1;
idx = 0;
}
// 头插
void add_to_head(int x)
{
e[idx] = x;
ne[idx] = head;
head = idx;
idx ++;
}
// 将x这个点插入下标是k的后面
void add (int k, int x)
{
e[idx] = x;
ne[idx] = ne[k];
ne[k] = idx;
idx ++;
}
// 将下标是k的后面一个点删掉
void remove(int k)
{
ne[k] = ne[ne[k]];
}