int e[N], l[N], r[N], idx;
/** 创建双链表(含头结点和尾结点) */
void init() {
r[0] = 1; // 头结点
l[1] = 0; // 尾结点
idx = 2;
}
/** 在下标为k的结点右侧插入一个结点 */
void insert(int k, int x) {
e[idx] = x;
r[idx] = r[k];
l[idx] = k;
l[r[k]] = idx;
r[k] = idx; //注意顺序 先写l[r[k]]
idx++;
}
/** 删除下标为k的结点 */
void remove(int k) {
r[l[k]] = r[k];
l[r[k]] = l[k];
}
/** 输出 */
void print() {
for (int i = r[0]; i != 1; i = r[i]) printf("%d ", e[i]);
}
双链表-------
最新推荐文章于 2024-05-30 16:17:47 发布