栈的应用-中缀表达式转后缀表达式

栈的应用-中缀表达式转后缀表达式

思路:我们拿到中缀表达式之后,从左到右遍历中缀表达式中的数字和运算符,如果遇到数字我们就直接把数字输出,如果遇到的是运算符,就需要判断它和栈顶运算符的优先级,如果他的优先级高于栈顶元素的优先级,就直接将其入栈,如果他的优先级低于或等于栈顶元素的优先级,就输出栈顶运算符,并将当前符号入栈。
例:中缀 “9 + ( 3 - 1 ) × 3 + 10 ÷ 2”转后缀的过程
1、创建一个空栈,为下面做铺垫
在这里插入图片描述
2、遍历中缀表达式,第一个是数字9,直接输出,第二个是运算符“ + ”,将“ + ”入栈。
在这里插入图片描述
3、接下来是左括号,遇到左括号直接入栈。
在这里插入图片描述
4、接下来是3,3直接输出,3之后是运算符“—”,将其入栈,之后是1,将将1输出,如下图
这里要注意,加减乘除运算符不与括号的优先级作比较。
在这里插入图片描述
5、后面是“)”,右括号要找“(”与之匹配,将左括号和右括号中间的运算符依次输出,在这里,双括号里面只有“—”号,所以只输出“—”,如下图:
在这里插入图片描述
在这里要注意,我们输出的括号里面的运算符,括号是出栈但不输出。
6、接下来是“ד,比较”ד与栈顶元素的优先级,发现优先级高于栈顶符号就直接入栈,在之后是数字3,将其直接输出,此时如下图:
在这里插入图片描述
7、之后是运算符” + “,比较” + “与栈顶元素的优先级,发现” + “的优先级低于运算符”ד,就把” × “输出,接着比较” + “与栈顶元素的优先级,发现” + “和” + “相等,也同样输出栈顶元素,然后将我们的运算符入栈。如下图:
在这里插入图片描述
此处栈内的+是表达式“9 + ( 3 - 1 ) × 3 + 10 ÷ 2”中第二个+
8、接下来是10 ,直接输出,在之后是”÷“,他的优先级比栈顶元素的优先级高,直接入栈,如图:
在这里插入图片描述
9、之后是2,直接输出,发现已经遍历结束,此时将栈内元素输出,结果如下
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值