单链表的数组实现
用数组来实现单链表,并支持链表的各种操作,能在OJ测试中获得更快的速度(理解记忆很easy)。
实现一个单链表,链表初始为空,支持三种操作:
(1) 链表头插入一个数;
(2) 删除第k个插入数的后面的数;
(3) 在第k个插入的数后插入一个数
代码实现:
#include <iostream> using namespace std; const int N = 100010; // head 表示头结点的下标 // e[i] 表示节点i的值 // ne[i] 表示节点i的next指针是多少 // idx 存储当前已经用到了哪个点 int e[N], ne[N], head, idx; // 初始化 int init () { head = -1; idx = 0; } // 将x插到头结点(头插法) int add (int x) { e[idx] = x; ne[idx] = head; head = idx++; } // 将下标是k的点后面的点删掉 int remove (int k) { ne[k] = ne[ne[k]]; } // 将x插到下标是k的点后面 int add_k (int k, int x) { e[idx] = x; ne[idx] = ne[k]; ne[k] = idx++; }

浙公网安备 33010602011771号