数组模拟单链表
- 以边为核心,每条边指向一个节点, 有多少条边就开多少大数组
- e是每条边指向的节点的值,ne是每条边的下一条边的index,cnt是所有边的下标
应用
1. 图论
2. 拉链法-哈希表
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100010;
int h, e[N], ne[N], cnt;
void insert(int k, int x) {
e[cnt] = x;
ne[cnt] = ne[k];
ne[k] = cnt++;
}
void my_delete(int k) {
ne[k] = ne[ne[k]];
}
int main() {
int m;
cin >> m;
h = -1;
for (int i = 0; i < m; i++) {
char c[2];
int k, x;
scanf("%s", c);
if (c[0] == 'H') {
cin >> k;
e[cnt] = k;
ne[cnt] = h;
h = cnt++;
} else if (c[0] == 'D') {
cin >> k;
if (k == 0) {
h = ne[h];
continue;
}
my_delete(k - 1);
} else {
cin >> k >> x;
insert(k - 1, x);
}
}
for (int i = h; ~i; i = ne[i]) {
cout << e[i] << ' ';
}
return 0;
}