链表
单链表
int r[N], val[N], pos[N], idx = 1;
val[idx] = x, r[idx] = r[0], r[0] = idx++;
val[idx] = x, r[idx - 1] = idx++;
r[pos[x]] = r[r[pos[x]]];
val[idx] = y, r[idx] = r[pos[x]], r[pos[x]] = idx++;
双向链表
int r[N], l[N], val[N], pox[N], idx = 1;
r[idx - 1] = idx, l[idx] = idx - 1, idx++;
pre = pox[x], val[idx] = y, pox[y] = idx, r[idx] = r[pre], l[idx] = pre, l[r[pre]] = idx, r[pre] = idx++;
p = pos[x], r[l[p]] = r[p], l[r[p]] = l[p];
for (int i = r[1]; i; i = r[i]) cout << val[i] << " ";
y总模版
int head, e[N], ne[N], idx;
void init()
{
head = -1;
idx = 0;
}
void insert(int a)
{
e[idx] = a, ne[idx] = head, head = idx ++ ;
}
void remove()
{
head = ne[head];
}
int e[N], l[N], r[N], idx;
void init()
{
r[0] = 1, l[1] = 0;
idx = 2;
}
void insert(int a, int x)
{
e[idx] = x;
l[idx] = a, r[idx] = r[a];
l[r[a]] = idx, r[a] = idx ++ ;
}
void remove(int a)
{
l[r[a]] = l[a];
r[l[a]] = r[a];
}
作者:yxc
链接:https:
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。