首页 > 其他分享 >栈(Stack)汇总

栈(Stack)汇总

时间:2024-06-13 18:04:22浏览次数:22  
标签:汇总 栈顶 ret 括号 操作符 C++ 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++**实现。

标签:汇总,栈顶,ret,括号,操作符,C++,Stack,表达式
From: https://blog.csdn.net/he_zhidan/article/details/139200384

相关文章

  • 基于云效 AppStack,5 分钟搞定一个 AI 应用的开发和部署
    实验介绍区别于传统的流水线工具,本实验将带你体验云效应用交付平台AppStack,从应用视角,完成一个AI聊天应用的高效交付。你将体验到:基于应用模板快速初始化应用,包含应用的代码库、部署编排架构、变量组、环境、研发流程等;应用多环境管理、多种部署策略、部署可观测能力;通过......
  • 基于云效 AppStack,5 分钟搞定一个 AI 应用的开发和部署
    实验介绍区别于传统的流水线工具,本实验将带你体验云效应用交付平台AppStack,从应用视角,完成一个AI聊天应用的高效交付。你将体验到:基于应用模板快速初始化应用,包含应用的代码库、部署编排架构、变量组、环境、研发流程等;应用多环境管理、多种部署策略、部署可观测能力;通过......
  • 语义分割——YOLOv8-Seg 参数汇总与调参建议
    语义分割——YOLOv8-Seg参数汇总与调参建议train参数参数 默认值 说明 调参建议model None 模型文件的路径,如yolov8m.pt -data None 数据文件的路径,如coco128.yaml -epochs 100 训练周期 根据数据集大小和模型复杂度调整time None 训练的小时数,如果已提供,则覆盖epochs ......
  • 基于 Nginx Ingress + 云效 AppStack 实现灰度发布
    作者:子丑场景简介灰度发布是降低生产部署风险,提升线上服务稳定性的重要手段,这在当前快速迭代的软件研发中尤为重要。相对于K8s默认的滚动部署或者简单的Pod分批,基于流量特征的灰度发布验证更精准,风险更低。在云原生场景下,基于NginxIngress的灰度发布是被广泛使用的方案......
  • openstack指定IP
    1先创建port,设置好IP地址。2将该portattach到instance。3在instance中手工配置静态IP,如果设置dhcp。默认重启reboot就好。4567[root@s16071-z2-controller01~]#sourceadmin-openrc89101112[root@s16071-z2-controller01~]#noval......
  • Java工程师技术提升汇总【1.1】
    4.6.VIM键盘图第5章网络配置和系统管理操作5.1查看网络IP和网关1)查看虚拟网络编辑器2)修改ip地址5.2配置网络ip地址5.2.1ifconfig配置网络接口ifconfig:networkinterfacesconfiguring网络接口配置1)基本语法:ifconfig(功能描述:显示所有网络接口......
  • 软件开发文档汇总(开发&实施&运维&安全&交付)
       前言:在软件项目管理中,每个阶段都有其特定的目标和活动,确保项目的顺利进行和最终的成功交付。以下是软件项目管理各个阶段的详细资料:软件项目管理部分文档清单: 工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书,需求调研计划,用户需求调查单,用户需求说明......
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 团队派遣(100分) - 三语言AC题解(Py
    ......
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] LYA与朋友们的石头剪刀布游戏(100分
    ......
  • MapStruct - 注解汇总
    @Mapper@Mapper将接口或抽象类标记为映射器,并自动生成映射实现类代码。public@interfaceMapper{//引入其他其他映射器Class<?>[]uses()default{};//将类import到生成的实现类中//可以使用{@linkmapping#expression()}表达式中引用这些类型,{@link......