【ACWING】 链表与邻接表
本节内容中均采用数组来模拟这些数据结构,不采用struct方式,因为结构体的创建(new)比较费时。
笔试的时候可以这么写,面试的时候,随意,但是面试一般用struct就行了。
1 单链表
如何用数组来模拟单链表呢
如果按照标准的单链表结构体定义,如下
//结构体定义单链表节点 typedef struct Node{ int value; struct Node * next; }Node,*Node;
也就是说一个单链表节点会有两个成员,一个存当前节点的值,另一个存下一个节点的地址。
所以创建两个数组e[N],ne[N]
,前者存值,后者存下个节点的下标,通过下标将两个数组联系起来。
2 双链表
多加一个数组就好了,直接看题怎么写就行。
3 栈
//初始化 int stk[N],tt; // 栈顶指针初始化为0或-1都行 //入栈 stk[ ++ tt] = x; //出栈 tt--; //取栈顶元素 stk[tt]; //判空 if(tt>0) {非空} else 为空
4 模拟队列
//初始化 int q[N], hh ,tt=-1; //队尾指针初始化为-1,看个人习惯 //入队 q[ ++ hh ] //出队 tt--; //判空 if(hh>tt) 为空
5 单调栈
经典题:
6 单调队列
适用于滑动窗口
分类:
算法 / ACWING算法基础课
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步