算法模板——数据结构篇

声明:参考自acwing


目录

1.单链表

2.双链表

3.数组栈与队列

4.单调栈


1.单链表

cpp 复制代码
int head,e[N],ne[N],idx;

void init(){
	head=-1;
	idx=0;
}
void add_head(int x){                 //head有实值
	e[idx]=x,ne[idx]=head,head=idx++;
}
void add(int k,int x){    
	e[idx]=x,ne[idx]=ne[k],ne[k]=idx++;
}
void del(int k){
	ne[k]=ne[ne[k]];
}

2.双链表

cpp 复制代码
int e[N],l[N],r[N],idx;

void init(){
	r[0]=1,l[1]=0;
	idx=2;
}
void insert(int k,int x){
	e[idx]=x;
	r[idx]=r[k];
	r[k]=idx;
	l[r[idx]]=idx;
	l[idx++]=k;
}
void remove(int k){
	r[l[k]]=r[k];
	l[r[k]]=l[k];
}

3.数组栈与队列

cpp 复制代码
int t;
int st[N];
st[++t]=k;
--t;
t==0;

int hh,tt;
int q[N];

#hh做头 tt做尾
q[tt++]=k;  #尾加
++hh;  #头出
tt==hh  #为空

4.单调栈

cpp 复制代码
#常用于找出每个数左边离它最近的比它大/小的数
int tt = 0;
for (int i = 1; i <= n; i ++ )
{
    while (tt && check(st[tt], i)) tt -- ;
    st[ ++ tt] = i;
}

++to be continued++

相关推荐
Warren9822 分钟前
软件测试-Selenium学习笔记
java·javascript·笔记·学习·selenium·测试工具·安全
秋难降24 分钟前
LRU缓存算法(最近最少使用算法)——工业界缓存淘汰策略的 “默认选择”
数据结构·python·算法
CoovallyAIHub2 小时前
线性复杂度破局!Swin Transformer 移位窗口颠覆高分辨率视觉建模
深度学习·算法·计算机视觉
在路上`2 小时前
前端学习之后端小白java的一些理论知识(框架)
java·学习
练习时长两年半的Java练习生(升级中)2 小时前
从0开始学习Java+AI知识点总结-18.web基础知识(Java操作数据库)
java·学习·web
点云SLAM2 小时前
Eigen中Dense 模块简要介绍和实战应用示例(最小二乘拟合直线、协方差矩阵计算和稀疏求解等)
线性代数·算法·机器学习·矩阵·机器人/slam·密集矩阵与向量·eigen库
Jayyih2 小时前
嵌入式系统学习Day19(数据结构)
数据结构·学习
renhongxia13 小时前
大模型微调RAG、LORA、强化学习
人工智能·深度学习·算法·语言模型
DdduZe3 小时前
8.19作业
数据结构·算法