一、定义
除了首尾两个结点之外,双链表中的每一个结点都有两个指针,其中一个指针指向左边的结点,另一个指针指向右边的结点。
二、代码
#include <iostream>
#include <vector>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 10010;
int value[N], l[N], r[N], idx;
void init(){
// 0表示左端点,1表示右端点
r[0] = 1, l[1] = 0;
idx = 2;
}
// 在k的右端插入x
void add(int k, int x){
value[idx] = x;
l[idx] = k, r[idx] = r[k];
l[r[k]] = idx;
r[k] = idx;
idx++;
}
// 删除第k个点
void remove(int k){
r[l[k]] = r[k];
l[r[k]] = l[k];
}