栈(Stack)汇总

栈简介

栈(Stack)是只允许在一端进行插入或者删除操作的线性表。它的操作特性可以概括为——后进先出(Last In First Out,LIFO)。栈顶(Top)——线性表允许进行插入删除的一端;
栈底(Bottom)——线性表不允许进行插入删除的一端;

解析表达式

以±乘()为例。
数据栈记录数值,操作符栈记录操作符。
遇到右括号或运算结束时才计算加减,此时确保没有乘法。ret = 0; 如果栈顶操作符是+,则ret += 数据栈顶, 否则ret -=数据栈顶。两个栈出栈。直到遇到(或操作栈为空。如果遇到(,则把左括号出栈。栈顶元素 += ret。
乘法执行时机:新的运算数或括号执行完成。 只需要执行一次乘法。
操作数(变量、常量) 之前的符合如果是乘号,马上计算。否则,等右括号或结束时,统一计算。
操作符栈只会有+ - (*。

难度分
【栈】1106. 解析布尔表达式 1880
【栈】1096. 花括号展开 II 2348
【栈】224. 基本计算器
【回溯 栈 代数系统 动态规划】282. 给表达式添加运算符
【栈】591. 标签验证器
【栈】726. 原子的数量
【栈】770. 基本计算器 IV

了解逆波兰表达式

前缀(前序)表达法(波兰表达式):+ a b
中缀(中序)表达法:a + b 我们常用的表达方式。
后缀(后续)表达法(逆波兰表达式):a b +
逆波兰表达式优点,运算简单,不需要括号:
操作数入栈,遇到操作符,则取出栈顶两个元素,进行运算,并将结果入栈。

局部变量的作用域

【栈】736. Lisp 语法解析

对顶栈

难度分
【对顶栈】2296. 设计一个文本编辑器 1911

临项消除

难度分
【栈 最小公倍数 最大公约数】2197. 替换数组中的非互质数 2057
【栈】2751. 机器人碰撞 2091

括号合法性判断

较难题为主,以后补充。

单调栈

单调栈分类、封装和总结

其它

难度分
【栈】895. 最大频率栈 2027
【栈】1172. 餐盘栈 2109

扩展阅读

视频课程

有效学习:明确的目标 及时的反馈 拉伸区(难度合适),可以先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771

如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176

相关下载

想高屋建瓴的学习算法,请下载《喜缺全书算法册》doc版
https://download.csdn.net/download/he_zhidan/88348653

我想对大家说的话
《喜缺全书算法册》以原理、正确性证明、总结为主。
闻缺陷则喜是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。
如果程序是一条龙,那算法就是他的是睛

测试环境

操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。

相关推荐

  1. 数据结构---(Stack)

    2024-06-15 18:30:01       37 阅读
  2. STL之stack

    2024-06-15 18:30:01       29 阅读
  3. c++stack)的介绍

    2024-06-15 18:30:01       26 阅读
  4. 堆(Heap)和Stack

    2024-06-15 18:30:01       7 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-15 18:30:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-15 18:30:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-15 18:30:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-15 18:30:01       18 阅读

热门阅读

  1. ubuntu设置GPU功率

    2024-06-15 18:30:01       7 阅读
  2. MatLab中无穷量和非数值量

    2024-06-15 18:30:01       7 阅读
  3. 网络安全练气篇——常见服务端口对应漏洞

    2024-06-15 18:30:01       8 阅读
  4. postman接口测试工具详解

    2024-06-15 18:30:01       10 阅读
  5. C语言运算类型有哪些

    2024-06-15 18:30:01       5 阅读
  6. 【Redis】为什么是单线程?为什么这么快呢?

    2024-06-15 18:30:01       8 阅读
  7. 小程序的生命周期以及页面生命周期

    2024-06-15 18:30:01       7 阅读
  8. mysql容器问题mbind: Operation not permitted

    2024-06-15 18:30:01       8 阅读
  9. NFS网络文件存储入门

    2024-06-15 18:30:01       8 阅读
  10. 小甲鱼——字典

    2024-06-15 18:30:01       9 阅读
  11. Scrapy与MongoDB的异步数据存储

    2024-06-15 18:30:01       9 阅读
  12. k8s及etcd的每日自动备份及故障时的还原脚本

    2024-06-15 18:30:01       10 阅读
  13. Android中球体碰撞代码分享-kotlin,入门版

    2024-06-15 18:30:01       10 阅读
  14. Non-zero exit code pycharm

    2024-06-15 18:30:01       11 阅读
  15. 电脑常用DOS命令

    2024-06-15 18:30:01       9 阅读