算法笔记的笔记——第7章 栈、队列和链表
栈
- 后进先出
- 栈顶指针始终指向最上方元素
- 栈为空时栈顶指针为-1
常用操作
- 清空(clear):
TOP = -1
- 获取栈内元素个数(size):
size = TOP + 1
- 判空(empty):
TOP == -1
- 进栈(push):
st[++TOP] = x
- 出栈(pop):
TOP--
- 取栈顶(top):
st[TOP]
注意:在进行出栈和取栈顶操作前必须判空。
队列
- 先进先出
- 队首指针
front
指向首元素前一个位置 - 队尾指针
back
指向尾元素
常用操作
- 清空(clear):
front = back = -1
- 获取队内元素个数(size):
size = back - front
- 判空(empty):
front == back
- 入队(push):
q[++back] = x
- 出队(pop):
front++
- 取队首(get_front):
q[front + 1]
- 取队尾(get_back):
q[back]
注意:在进行出队、取队首和取队尾操作前必须判空。
链表
- 不连续
- 由数据域和指针域构成
为链表分配空间
-
malloc
函数位于
<cstdlib>
,返回void*
int* p = (int*)malloc(sizeof(int));
-
new
运算符typename* p = new typename;
-
free
函数释放
malloc
函数分配的空间 -
delete
运算符释放
new
运算符分配的空间
基本操作
-
创建链表
略
-
查找元素
从第一个节点开始不断判断数据域是否等于x
-
插入元素
注意保存前驱节点指针
-
删除元素
注意保存前驱节点指针
静态链表
直接用结构体数组当链表用,适用于数据较少的情况
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫