欢迎来到CJY的博客|

wenli7363

园龄:3年3个月粉丝:7关注:6

【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 @   wenli7363  阅读(40)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起