链表,作为一种最简单的数据组织方式,在平常工作中用处非常广泛。
关于链表,你一定要知道的
链表的常见技巧
- 链表中的哨兵节点
- 快慢指针
- 基于递归的反转问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
int head, e[N], ne[N], idx;
void init() { head = -1; idx = 0; }
void insert(int a) { e[idx] = a, ne[idx] = head, head = idx ++ ; }
void remove() { head = ne[head]; }
int e[N], l[N], r[N], idx;
void init() { r[0] = 1, l[1] = 0; idx = 2; }
void insert(int a, int x) { e[idx] = x; l[idx] = a, r[idx] = r[a]; l[r[a]] = idx, r[a] = idx ++ ; }
void remove(int a) { l[r[a]] = l[a]; r[l[a]] = r[a]; }
|
链表相关的经典题目