【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 单调队列

适用于滑动窗口

posted @ 2022-12-30 23:54  wenli7363  阅读(56)  评论(0)    收藏  举报