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];
}
相关推荐
SoftLipaRZC7 分钟前
单链表的应用:经典OJ题与通讯录项目实战
数据结构
SoftLipaRZC10 分钟前
单链表专题:从概念到实现
数据结构
折哥的程序人生 · 物流技术专研6 小时前
Java面试85题图解版 · 特别篇:2026后端高频面试题复盘(算法底层逻辑+高并发架构设计全解析,附Java实战代码)
java·网络·数据库·算法·面试
想吃火锅10057 小时前
【leetcode】14.最长公共前缀js
算法·leetcode·职场和发展
云絮.9 小时前
数据库操作
数据库·mysql·算法·oracle
小林ixn9 小时前
LeetCode 206. 反转链表(迭代 + 递归详解)
算法·leetcode·链表
凡人叶枫9 小时前
Effective C++ 条款17:以独立语句将 newed 对象置入智能指针
java·linux·开发语言·c++·算法
菜鸟‍10 小时前
LeetCode 1 27 和 704 || 两数之和 移除元素 二分查找
算法·leetcode·职场和发展
退休倒计时12 小时前
【每日一题】LeetCode 142. 环形链表 II TypeScript
算法·leetcode·链表·typescript
popcorn_min12 小时前
Digits 手写数字识别:随机森林多分类 + 像素级特征热力图
算法·随机森林·分类