在算法题中使用数组实现静态链表
定义变量
// head 表示头节点的下标
// e[i] 表示节点i的值
// ne[i] 表示节点i的next指针是多少
// idx 表示当前已经用到了哪个点
int head, e[N], ne[N], idx;
头插法
void add_to_head(int x)
{
ne[idx] = head; // 对应图中1
head = idx; // 对应图中2
e[idx] = x;
++idx;
}
任意位置插入
void add(int k, int x)
{
e[idx] = x;
ne[idx] = ne[k]; // 对应1操作
ne[k] = idx; // 对应2操作
++idx;
}
删除第k个插入的点
void remove(int k)
{
ne[k] = ne[ne[k]];
}