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];
}
相关推荐
yi.Ist1 天前
2025CCPC郑州邀请赛
c++·学习·算法·acm
少许极端1 天前
算法奇妙屋(四十八)-单调栈
java·算法·单调栈
水木流年追梦1 天前
CodeTop Top 300 热门题目2-最长回文子串
开发语言·人工智能·python·算法·leetcode
图码1 天前
递归入门:从n到1的优雅打印之旅
数据结构·c++·算法·青少年编程·java-ee·逻辑回归·python3.11
大肥羊学校懒羊羊1 天前
题解:计算约数个数
数据结构·c++·算法
生信之灵1 天前
拓扑与曲率双剑合璧:scGeom如何从单细胞数据中“看见”细胞命运
人工智能·深度学习·算法·单细胞·多组学
良木生香1 天前
【C++初阶】:STL——String从入门到应用完全指南(3)
c语言·开发语言·数据结构·c++·算法
_深海凉_1 天前
LeetCode热题100-在排序数组中查找元素的第一个和最后一个位置
算法·leetcode·职场和发展
qyzm1 天前
Educational Codeforces Round 189 (Rated for Div. 2)
数据结构·python·算法
fox_lht1 天前
8.3.使用if let和let else实现简明的程序流控制
开发语言·后端·算法·rust