算法模板——数据结构篇

声明:参考自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++

相关推荐
小森776718 分钟前
(七)深度学习---神经网络原理与实现
人工智能·深度学习·神经网络·算法
charlie11451419120 分钟前
内核深入学习3——分析ARM32和ARM64体系架构下的Linux内存区域示意图与页表的建立流程
linux·学习·架构·内存管理
chenyuhao202424 分钟前
链表的面试题4之合并有序链表
数据结构·链表·面试·c#
threelab33 分钟前
03.three官方示例+编辑器+AI快速学习webgl_animation_multiple
人工智能·学习·编辑器
迷茫不知归路36 分钟前
操作系统实验习题解析 上篇
c++·算法·操作系统·实验课设
threelab37 分钟前
18.three官方示例+编辑器+AI快速学习webgl_buffergeometry_points_interleaved
学习·编辑器·webgl
周杰伦的稻香1 小时前
关于网站提交搜索引擎
经验分享
电子云与长程纠缠1 小时前
UE5中制作动态数字Decal
学习·ue5·编辑器·贴图
愚润求学1 小时前
【递归、搜索与回溯】专题一:递归(二)
c++·笔记·算法·leetcode
h汉堡1 小时前
C/C++内存管理
java·c语言·开发语言·c++·学习