数组形式的线性表要比链式表在算法竞赛中更常见,例如图的应用等。
首先是定义
head 头节点
idx 表示当前结点指针
e[N] 结点元素
ne[N] 结点下一个指针
- 初始化 -- init()
void init() {
head = -1;
idx = 0;
}
增添 -- add()
void add(int val) {
e[idx] = val;
ne[idx] = head;
head = idx++;
}
插入 -- insert(int k, int val) -- 在第k个后面插入val
void insert(int k, int val) {
e[idx] = val;
ne[idx] = ne[k];
ne[k] = idx++;
}
删除 -- dele(int k) // 不要delete,因为有这个关键字 删除第k个元素
void delt(int k) {
ne[k] = ne[ne[k]];
}
测试
64 32 16 8 4 2 1