五、考研数据结构笔记——栈与队列的应用
一、应用一:栈在括号中的应用
1.1 问题描述
一般的写一个算数表达式,看看括号是否是匹配的。
1.2 算法思路
- 初始设置一个空栈,顺序读入括号
- 若是左括号压入栈中。
- 若是右括号,看是否与栈顶的左括号匹配,
- 若匹配,则弹出栈顶左括号
- 若不匹配,则算法结束。
1.3 手算
二、应用二:栈在表达式中的应用
2.1 问题描述
计算机中常常会把一个表达式转换为前缀表达式或者后缀表达式,便于利用栈进行计算
2.2 前中后缀表达式
- 中缀表达式:a + b,运算符在数字之间,也就是普通的我们经常写的表达式。
- 后缀表达式:a b +,运算符在数字之后,根据中缀表达式进行变换而来
- 前缀表达式:+ a b,运算符在数字之前,根据中缀表达式进行变换而来
2.3 考法一:前中后缀表达式之间转换(重点)
- 通常考试会给一个中缀表达式,写出它的前缀表达式或者后缀表达式。
- 中缀表达式转后缀表达式原则:数字集合在左优先,也称左优先原则。
- 中缀表达式转前缀表达式原则:数字集合在右优先,也称右优先原则。
2.4 考法二:后缀表达式如何计算
- 通常考试会给一个后缀表达式,写出其计算结果
- 计算步骤
- ①从左到右遍历表达式
- ②扫描到数字压入栈中
- ③扫描到操作符弹出栈顶两个元素Y和X
- ④将弹出的两个数和操作符进行计算 ,XY(一定要注意最上面的是Y其次到X)
- ⑤将计算结果压入栈中,继续扫描。
2.5 代码
应用三:栈在递归中的应用
类似于俄罗斯套娃,一层接着一层循环。但有两个条件,需要递归表达式(递归体)和边界条件(递归出口)。
典型的就是斐波那契数列,还有树的遍历都会涉及到。读的懂就可以。不懂可以再看看视频。初次理解肯定有点难。
斐波那契数列
在这里插入代码片
应用四:队列在层序遍历中的应用
4.1 问题描述
二叉树的遍历有前序遍历,中序遍历,后序遍历,层序遍历。其中层序遍历中就需要用到队列。
4.2 算法步骤
- ① 根节点入队
- ② 若队空(所有结点都已处理完毕),则遍历结束;否则执行步骤③
- ③ 队列中第一个结点出队,并访问之。若有左孩子,左孩子入队;若有右孩子,则将右孩子入队,返回②。
五、考研数据结构笔记——栈与队列的应用相关推荐
- 王道计算机考研 数据结构 (栈和队列)
第三章.栈和队列 3.1.1_栈的基本概念 栈的定义 栈的基本操作 栈的常考题型 思维导图 3.1.2_栈的顺序存储实现 顺序栈的定义 初始化操作 进栈操作 出栈操作 读栈顶元素操作 另一种方式 这种 ...
- 2022年考研数据结构_3 栈和队列
https://gitee.com/fakerlove/Data-Structure 文章目录 3. 栈和队列 3.1 栈 3.1.1 栈的定义 3.1.2 栈的实现 3.1.3 栈的应用 (1)递归 ...
- 天勤考研数据结构笔记—栈的C语言实现
栈的基本概念 栈的定义:栈是一种只能在一端进行插入或删除操作的线性表.其中允许进行插入或删除的一端称为栈顶(top).栈顶是由一个称为栈顶指针的位置指示器(其实就是一个变量,对于顺序栈,就是数组索引, ...
- 一、考研数据结构笔记——引言及目录
一.关于我理解的数据结构 1. 引言 本人自2021年3月准备考研,考研主要是为了提升学历,本科院校不是理想.迫切需要提高学历. 写这刊博客,主要是总结我考研路上对数据结构的一些理解,以及为了方便我后 ...
- 2022天勤考研数据结构笔记 第3章 栈和队列
2022天勤考研数据结构笔记 第3章 栈和队列(更新中) 第3章 栈和队列 3.1 结构体定义 3.2 顺序栈 3.3 链栈 3.4 栈的应用 3.5 顺序队 3.6 链队 第3章 栈和队列 栈和队列 ...
- 二、考研数据结构笔记——绪论(理解数据结构,算法,时间复杂度计算做题技巧)
一.数据结构基本概念 1.数据:数据是信息的载体.客观事物的一种表现形式.万事万物都能用数据表示出来. 2.数据元素:数据元素是数据的基本单位,一个数据元素有若干个数据项组成 3.数据项:构成数据元素 ...
- 【数据结构】栈、队列、堆的python实现
[数据结构]栈.队列.堆的python实现 一.栈的python实现 1.1.栈的列表实现方法 1.2.用双向队列模拟栈 二.队列的python实现 2.1.队列的列表实现 2.2.使用deque实现 ...
- C语言【数据结构】栈和队列【OJ题(C++)、选择题】
目录 一.OJ题 1.225. 用队列实现栈 2.232. 用栈实现队列 3.622. 设计循环队列 4.20. 有效的括号 二.选择题 1.下列关于栈的叙述正确的是(B) 2.一个栈的入栈序列为AB ...
- 数据结构~07.栈和队列的基本概念
数据结构~07.栈和队列的基本概念 本文是上一篇文章的后续,详情点击该链接~ 栈的定义: 栈是一种只能在一端进行插入或删除的线性表.其中,允许插入或删除的一端为栈顶(TOP).栈顶由一个称为栈顶指针的 ...
最新文章
- 计算机网络第五章:运输层
- ​【Python基础】一文看懂 Pandas 中的透视表
- 实现SDI与MDI的转换 (转)
- TCP/IP协议与UDP协议的区别
- 【招聘(西安)】深圳市中兴云服务有限公司.NET工程师
- 凝思系统改时间_国产操作系统往事:四十年激变,终再起风云
- 【2018.5.12】模拟赛之四-ssl2416 条形图【高精度,dp】
- iphone储存空间系统怎么清理_如何清理iPhone的缓存,释放更多存储空间,这些方法你知道吗...
- php 自动寻路算法,PHP树-不需要递归的实现方法
- 4个独立按键实现对数码管数字显示的加减清零等
- TDSQL 在微众银行的大规模实践之路
- conflicting declaration ‘typedef struct LZ4_stream_t LZ4_stream_t’解决
- 关于 Mythware 极域电子教室
- 电子计算机X线体层摄影,电子计算机X线体层摄影检查诊断乳腺肿块的价值
- dedecms如何制作中英文切换的网站?
- 5G啊5G,你是不是只比4G多一G?
- 第十四章:【UCHome二次开发】uchome通用方法
- BGP 下一跳的理解和实验
- 今日头条引流脚本,微商引流工具
- 计算最长连续1数码长度c语言,C语言练习场-有难度