当前位置: 首页 > news >正文

栈(Stack)汇总

栈简介

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

解析表达式

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

难度分
【栈】1106. 解析布尔表达式1880
【栈】1096. 花括号展开 II2348
【栈】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++**实现。

相关文章:

  • MyBatis 延迟加载,一级缓存,二级缓存设置
  • Linux C语言:指针和指针变量
  • 用Python向Word文档添加页眉和页脚
  • Node.js 和 Vue 的区别的基本知识科普
  • 排名前五的 Android 数据恢复软件
  • 第一百零九节 Java面向对象设计 - Java抽象类和方法
  • 动手学深度学习33 单机多卡并行
  • 【 EI会议 | 西南大学主办 | 往届均已实现检索】第三届神经形态计算国际会议(ICNC 2024)
  • hana 中的缓存视图功能,类似ORACLE 中的 物化视图功能
  • Tinymce富文本编辑器在el-dialog中遮挡的问题
  • Jenkins 内置变量 和变量作用域
  • 【成品设计】基于物联网的停车管理系统设计与实现
  • Spring Boot:Java 应用开发高效之道
  • 数据结构之初识泛型
  • idea有这个类却报红,无法用快捷键找到
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • Hibernate最全面试题
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • python大佬养成计划----difflib模块
  • Python十分钟制作属于你自己的个性logo
  • Sass 快速入门教程
  • SSH 免密登录
  • Vue ES6 Jade Scss Webpack Gulp
  • vue的全局变量和全局拦截请求器
  • Webpack 4 学习01(基础配置)
  • 程序员最讨厌的9句话,你可有补充?
  • 免费小说阅读小程序
  • 数据可视化之 Sankey 桑基图的实现
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • !!java web学习笔记(一到五)
  • # Redis 入门到精通(七)-- redis 删除策略
  • #Z0458. 树的中心2
  • #前后端分离# 头条发布系统
  • (C语言)共用体union的用法举例
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (Matlab)使用竞争神经网络实现数据聚类
  • (超详细)语音信号处理之特征提取
  • (第二周)效能测试
  • (二)十分简易快速 自己训练样本 opencv级联lbp分类器 车牌识别
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (排序详解之 堆排序)
  • (十八)Flink CEP 详解
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .DFS.
  • .gitignore文件—git忽略文件
  • .net CHARTING图表控件下载地址
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET 设计一套高性能的弱事件机制
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法