Bootstrap

双链表实现

双链表的初始化

#include <iostream>

using namespace std;

const int N = 10010;

int m;

int e[N], l[N], r[N], idx;
// e[] 表示这个点的值是多少
// l[] 表示这个点左边的点是谁
// r[] 表示这个点右边的点是谁

// 初始化
void init() {
    // 0表示左端点,1表示右端点
    r[0] = 1, l[1] = 0;
    idx = 2;
}

双链表的插入

// 在第k个点的右边插入x
void add(int k, int x) {
    // 首先把值赋好
    e[idx] = x;
    // 步骤1 
    r[idx] = r[k];
    l[idx] = l[k];
    // 步骤2   
    l[r[k]] = idx;
    r[k] = idx;
}
;