邓俊辉数据结构与算法学习笔记-第四章
文章目录
- 栈和队列
- a 栈的接口与实现
- a1 栈
- a2 实例
- a3 实现
- c
- c1-1 栈的典型应用
- c1-2 进制转换算法
- c1-3实现
- c2-1括号匹配实例
- c2-2 尝试
- c2-3 构思
- c2-4 实现
- c2-5 反思
- c2-6 扩展
- c3-1 栈混洗
- c3-2 计数
- c3-3 甄别
- c3-4 算法
- c3-5 括号
- c4-1 中缀表达式
- c4-2 构思
- c4-3 实例
- c4-4 算法框架
- c4-5 算法细节
- c4-6 实例
- c5-1 逆波兰表达式简化
- c5-2 体验
- c5-3 手工
- c5-4 RPN转换算法
- d 队列
- d1 队列接口
- d2 实例
- d3 实现
栈和队列
day17
a 栈的接口与实现
a1 栈
a2 实例
LIFO:后进先出
a3 实现
上图为基于向量模拟实现栈,其中入栈、出栈操作都是在向量末尾完成,复杂度是O(1),如果在向量首部实现入栈、出栈的话,复杂度就会变成O(n)
c
c1-1 栈的典型应用
栈的典型应用场合
c1-2 进制转换算法
计算过程自上而下,输出结果,自下而上,可以应用栈存储输出结果
c1-3实现
c2-1括号匹配实例
c2-2 尝试
c2-3 构思
c2-4 实现
c2-5 反思
只有一种括号时,使用计数器也可以实现
c2-6 扩展
c3-1 栈混洗
栈混洗后结果如下
c3-2 计数
catalan数:https://www.cnblogs.com/Morning-Glory/p/11747744.html
c3-3 甄别
c3-4 算法
编程练习:利用堆栈完成栈混洗模拟实现的编程(√)
c3-5 括号
push换成左括号,pop对应于一个右括号,发现同一元素对应的push/pop操作恰好对应于一对匹配的括号。反过来由n对括号构成的任何一个合法的表达式,也可以解释为对n个元素进行栈混洗的一个合法的过程。总结来说,n个元素的合法的栈混洗有多少种,n对括号的合法的表达式就有多少种,二者一 一对应。
c4-1 中缀表达式
这些计算是如何实现的?
c4-2 构思
优先计算优先级高的运算符
延迟缓冲:线性扫描,找到优先级高的先计算,优先级不定的先缓冲起来,接着向下扫描。
c4-3 实例
c4-4 算法框架
c4-5 算法细节
上图解释了程序代码中case ‘=’,即运算符优先级相等时,代码编写的思路。上图中定义了左括号与右括号的优先级相等,当遍历出现右括号时,此时栈顶一定是与之对应的左括号,且二者包含的计算式在之前已经被计算出来了,所以直接将左括号出栈,跳过右括号继续向下遍历即可。
对于\0,其作用也相当于一对括号。
c4-6 实例
其他运算符乐于接收左括号,左括号也乐于接收其他运算符
\0,右括号乐于促成栈顶运算执行
c5-1 逆波兰表达式简化
逆波兰表达式不使用括号表达优先级,而是将运算的优先级体现为运算符在表达式中出现的次序,谁先出现,谁先计算。
c5-2 体验
将中缀表达式转换为RPN,只需要一个堆栈,即可完成运算
c5-3 手工
转换之后,操作数的顺序不会改变
c5-4 RPN转换算法
d 队列
d1 队列接口
enqueue;dequeue
d2 实例
d3 实现
开始第五章
邓俊辉数据结构与算法学习笔记-第四章相关推荐
- 邓俊辉数据结构与算法学习笔记-第十一章
文章目录 11.串 11.a ADT 11.b 串匹配 11.b1 串匹配 11.b2 蛮力匹配 11.c KMP算法 11.c1 KMP算法:从记忆力到预知力 11.c2 KMP算法查表 11.c3 ...
- 邓俊辉 数据结构与算法C++版 第十三章 串 ADT
邓公数据结构与算法 第十三章 串 ADT 定义和特点 术语 ADT接口实现 模式匹配 问题与需求 算法测试方法 蛮力匹配 构思 蛮力匹配:版本1 蛮力匹配:版本2 蛮力匹配:性能分析 KMP算法 ne ...
- 清华大学邓俊辉-数据结构MOOC笔记-树的概念及逻辑表示
清华大学邓俊辉-数据结构MOOC笔记-树的概念及逻辑表示 有关概念: 与图论略有不同,数据结构中的树:1.需要为每一颗树指定一个特殊的顶点,作为"根"(root),对应rooted ...
- 数据结构与算法学习笔记之 从0编号的数组
数据结构与算法学习笔记之 从0编号的数组 前言 数组看似简单,但掌握精髓的却没有多少:他既是编程语言中的数据类型,又是最基础的数据结构: 一个小问题: 为什么数据要从0开始编号,而不是 从1开始呢? ...
- 数据结构与算法学习笔记之 提高读取性能的链表(上)
数据结构与算法学习笔记之 提高读取性能的链表(上) 前言 链表(Linked list)比数组稍微复杂一点,在我们生活中用到最常见的应该是缓存,它是一种提高数据读取性能的技术,常见的如cpu缓存,浏览 ...
- 数据结构与算法学习笔记——链栈
数据结构与算法学习笔记(C语言) 链栈 在开始链栈的学习之前,我们先实现一下上一篇文章中提到的检查括号匹配的小程序,鉴于水平有限,本人就随便写一下代码好了,目标仅限于对功能的实现. /*用顺序栈这种数 ...
- 数据结构与算法学习笔记4:递归+分治法
数据结构与算法学习笔记4 递归 斐波那契数列 青蛙跳台阶问题 链表倒序打印 分治法 二分查找/折半查找 Binary Search 题目1:快速幂 题目2:如何判断一个数是否为2的次幂 递归 指在函数 ...
- 数据结构与算法学习笔记15:最大流问题 / 二分图 / 有权无权二分图的匹配 / 匈牙利算法 / 银行家算法 / 稳定婚配
数据结构与算法学习笔记15:最大流问题 / 二分图 / 有权无权二分图的匹配 / 匈牙利算法 / 银行家算法 / 稳定婚配 引入小题:最短路径 最大流问题(maximum flow problem) ...
- 数据结构与算法 学习笔记(5):字符串
数据结构与算法 学习笔记(5)- 字符串 本次笔记记录了LeetCode中关于字符串的一些问题,并给出了相应的思路说明和代码.题目编号与LeetCode对应,方便查找. 题目1:LeetCode 13 ...
最新文章
- R语言Welch方差分析(Welch’s ANOVA)实战:Welch方差分析是典型的单因素方差分析的一种替代方法,当方差相等的假设被违反时我们无法使用单因素方差分析,这时候Welch’s出来救场了
- C#高级编程----错误和异常的总结
- 基于cuda的mmp的bug调试
- JSP教程第5讲笔记
- JavaWEB开发国际化
- Spring Cloud Sleuth 之Greenwich版本全攻略
- 超好玩的msn自制动画头像
- Excel怎么制作二维码图片?
- 锐捷服务器虚拟化技术_网络设备-锐捷-交换机(S8607E)VSU虚拟化终结配置篇
- 不同机构的自动驾驶专利分析报告解读
- [4G5G专题-41]:物理层-物理随机接入信道PRACH与随机接入过程
- 大数据工程师和数据分析师有何区别
- html为什么链接无效,如何揪出网页中的无效链接
- 插入排序:直接插入、交换插入、折半插入
- 从懵懂走向成熟,证明属于自己的征程
- 第五届金鹏奖圆满落幕 2015年度原创游戏榜单出炉
- 新浪博客大赛:你刷我也刷?
- 佟大为新任《非诚》嘉宾 极力反对异地恋
- STC系列芯片的串口通信编程
- 选一些200页左右的书,每周看一本
热门文章
- docker部署jpress详细版本
- Cesium.js解析第一篇 Cartesian3
- mysql leader/followers_half-sync/half-async 和 Leader/Followers 模式的主要区别
- DALAO们好我是新手
- 884.两句话中的不常见单词
- Unity摄像头仿真调研(svl)
- Maya cmds pymel 单位和轴向设置
- matlab中对于xf(x)的积分,[matlab 积分]MATLAB求积分?
- ltib常用命令详解
- windows环境下C++实现的多种目录监控和优劣解析