acwing算法基础之数据结构--双链表

目录

  • [1 知识点](#1 知识点)
  • [2 模板](#2 模板)

1 知识点

一般的结构体写法为,

cpp 复制代码
struct BiListNode {
	int val;
	BiListNode *left;
	BiListNode *right;
};

但我们不用这个,而用数组模拟双链表,此时,用编号为0的结点表示头结点,用编号为1的结点表示尾节点。

2 模板

cpp 复制代码
const int N = 1e6 + 10;
int idx; //用来表示所有的结点下标。
int e[N], l[N], r[N]; //e[i]表示结点i的值,l[i]表示结点i的左边结点,r[i]表示结点i的右边结点。

//(1)初始化
void init() {
	//结点0表示头结点,结点1表示尾节点。
	r[0] = 1;
	l[1] = 0;
	idx = 2;
}

//(2)在结点k的右边插入数值x
void insert(int k, int x) {
	e[idx] = x;
	r[idx] = r[k];
	l[idx] = k;
	r[k] = idx;
	l[r[idx]] = idx;
	idx++;
}

//(3)删除结点k
void remove(int k) {
	r[l[k]] = r[k];
	l[r[k]] = l[k];
}
相关推荐
iAkuya1 分钟前
(leetcode)力扣100 71字符串解码(栈(两种)||递归)
windows·算法·leetcode
重生之后端学习6 分钟前
105. 从前序与中序遍历序列构造二叉树
java·数据结构·后端·算法·深度优先
样例过了就是过了6 分钟前
LeetCodere热题100 最小覆盖子串
数据结构·算法·leetcode
追随者永远是胜利者9 分钟前
(LeetCode-Hot100)10. 正则表达式匹配
java·算法·leetcode·go
We་ct10 分钟前
LeetCode 146. LRU缓存:题解+代码详解
前端·算法·leetcode·链表·缓存·typescript
烟花落o12 分钟前
【数据结构系列03】链表的回文解构、相交链表
数据结构·算法·链表·刷题
fu的博客12 分钟前
【数据结构4】单向循环链表实现
数据结构·链表
努力学算法的蒟蒻19 分钟前
day87(2.16)——leetcode面试经典150
数据结构·leetcode·面试
追随者永远是胜利者22 分钟前
(LeetCode-Hot100)17. 电话号码的字母组合
java·算法·leetcode·职场和发展·go
不想看见40423 分钟前
Shortest Bridge -- 广度优先搜索 --力扣101算法题解笔记
算法·leetcode·宽度优先