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

数据结构【DS】栈的应用

描述一下如何实现括号匹配?

初始时栈为空。

从左往右遍历算术表达式中的每个括号元素:

①当遍历到左括号时,将其压入栈顶。

②当遍历到右括号时,将栈顶元素出栈,并判断出栈的左括号与当前遍历的右括号是否匹配(左小括号应与右小括号匹配、左中括号应与右中括号匹配):

如果不匹配,则算法结束,括号匹配失败;

如果匹配,则继续遍历下一个括号元素。

当遍历完算术表达式中所有括号元素后,若栈为空,则括号匹配成功;若栈非空,则括号匹配失败。

如何用栈实现中缀转后缀?【分机算和手算】

机算:

从左向右开始扫描中缀表达式:

遇到数字时,加入后缀表达式;

遇到运算符时:

a.若为'(',入栈;

b.若为')',则依次把栈中的运算符加入后缀表达式,直到出现' (',从栈中删除' (';

c.若为除括号外的其他运算符,当其优先级高于除' ('外的栈顶运算符时,直接入栈。否则从栈顶开始,依次弹出比当前处理的运算符优先级和优先级相等的运算符,直到一个比它优先级低的或遇到了一个左括号为止。”

当扫描的中缀表达式结束时,栈中的所有运算符依次出栈加入后缀表达式。

手算:

把运算符号移动到对应的括号后面

如何用后缀表达式进行求值?

  • 利用后缀表达式,每遇到操作数入栈,操作符时出栈两个操作数,运算后入栈。

在递归调用时,系统需要存储什么数据?

  • 在递归调用的过程中,系统为每一层的返回点局部变量传入实参等开辟了递归工作栈来进行数据存储

 

在递归调用时,先调用的函数是靠近栈底还是栈顶?

  • 越靠后被调用的函数信息越靠近栈顶
  • 先调用的函数靠近栈底

 

递归的次数过多会造成什么?

  • 递归次数过多容易造成栈溢出

 

某个函数return后该函数在栈中的信息怎么处理?

  • 某个函数return后该函数在栈中的信息就会消失
http://www.lryc.cn/news/236174.html

相关文章:

  • 大数据数仓建模基础理论【维度表、事实表、数仓分层及示例】
  • FlinkCDC数据实时同步Mysql到ES
  • 【Feign】 基于 Feign 远程调用、 自定义配置、性能优化、实现 Feign 最佳实践
  • 小迪安全笔记(3)——基础入门3、基础入门4
  • SOME/IP 协议介绍(六)接口设计的兼容性规则
  • 吴恩达《机器学习》8-5->8-6:特征与直观理解I、样本与值观理解II
  • 『亚马逊云科技产品测评』活动征文|借助AWS EC2搭建服务器群组运维系统Zabbix+spug
  • 文件转换,简简单单,pdf转word,不要去找收费的了,自己学了之后免费转,之后就复制粘贴就ok了
  • Jmeter——循环控制器中实现Counter计数器的次数重置
  • [创业之路-85]:IT创业成功老板的品质、创业失败老板的特征、成功领导者的品质、失败管理者的特征
  • 警惕.360勒索病毒,您需要知道的预防和恢复方法。
  • 人力资源小程序
  • 【多线程 - 10、线程同步3 ThreadLocal】
  • 【Flink 问题集】The generic type parameters of ‘Collector‘ are missing
  • 数据分析—将txt文件转为csv文件;将csv文件转为xls文件
  • 【算法】二分查找-20231120
  • WPF实现将鼠标悬浮在按钮上时弹出菜单
  • 车载以太网-传输层-UDP
  • uniapp如何上传文件,使用API是什么
  • 【狂神说Java】Docker概述 | Docker安装 | Docker的常用命令
  • Git精讲
  • 读书笔记:Effective C++ 3.0版2005年Scott Meyers : 55条建议(47-55)
  • Golang Context 的并发安全性探究
  • C++中只能有一个实例的单例类
  • 单张图像3D重建:原理与PyTorch实现
  • 340条样本就能让GPT-4崩溃,输出有害内容高达95%?OpenAI的安全防护措施再次失效
  • 2023.11.17使用flask将多个图片文件上传至服务器
  • 母婴服务预约小程序的效果如何
  • Flask实现cookie 开发
  • 2311rust,到60版本更新