通过栈将中缀表达式转换为等价的后缀表达式

为什么要从中缀表达式转换为等价的后缀表达式?

        →使后缀表达式包含运算符优先级的信息,方便计算机能理解进行运算。

什么是中缀表达式?

        →中缀表达式虽然是人类看得懂的简单算术形式,但对计算机来说反而复杂难以理解

什么是后缀表达式?  

  →后缀表达式是计算机能理解的形式,后缀表达式是将运算符写在元素(即非运算符)之后。

题目:

已知操作符包括   +,-,*,/,(,)   将中缀表达式   a+b-a*((c+d)/e-f)+g   转换为等价的后缀表达式ab+acd+e/f-*-g+   时,用栈来存放暂时还不能确定运算次序的操作符,若栈初始时为空,则转换过程中同时保存在栈中的操作符的最大个数是( )。
A.5
B.7

C.8
D.11

定义三个东西:

  1. 后缓生成部分【初始值:null】【不需要接受括号】
  2. 运算符栈【初始值:null】
  3. 中缀未处理部分【初始值:a+b-a*((c+d)/e-f)+g】

运算符栈出栈是加在后缓生成部分里的最后一个元素之后的

  1. 当前的中缀未处理部分的第一个元素如果是运算符,就取出该运算符并放进运算符栈里最后一个元素之后,也就是运算符栈的入栈
  2. 当前的中缀未处理部分的第一个元素如果是元素(即非运算符),可以直接加在后缓生成部分里最后一个元素之后。

故经过查看,转换过程中同时保存在栈中的操作符的最大个数是5个,选A

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZYT_庄彦涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值