栈的应用——后缀表示法(逆波兰表示法)——Reverse Polish Notation

中缀表示法:平时所用的标准的四则运算表达式例如9 + (3 - 1) x 3 + 10 ÷ 2 称为中缀表示法

后缀表示法:一种不需要括号的后缀表示法 也被称为逆波兰表示法:9 3 1 * + 10 2 / +

1.那么从中缀表示法到后缀表示法是怎么转换的呢?

回答:从左到右便利表达式的每个数字和符号,遇到数字就输出让他称为后缀表达式的一部分,若是符号则判断它与栈顶符号的优先级,如果是右括号或者优先级不高于(也就是<或者=)栈顶符号(乘除优先加减)则栈顶元素依次出栈,称为后缀表达式一部分,然后将当前符号进栈,一直到结束。

2.那么后缀表达式如何计算?

回答:从左到右依次遍历后缀表达式的每个数字和符号,遇到数字就进栈,遇到符号就将栈顶的两个数字(1).先出栈 (2)再进行运算 (3)最后将运算结果进栈。最终得到结果。

3.就上面案例解释如下:

在这里插入图片描述

1:中缀-后缀:9是数字先成为后缀表达式一部分 +是符号先进栈 “(“是符号再进栈 —是符号 和栈顶元素”(“相比没有可比性。接着是”)“和栈里面的左”(” 完成匹配 。因此从左"(" 依次出栈直到")" 左括号上边只有"—" 所以输出"—"。到目前为止是931—。接着3成为后缀表达式一部分。接下来是×号 和栈顶元素+号相比 >= 因此入栈,接下来是+号 比×号小,优先级和最后一个+号一样。因此全部出栈 目前是931—3*+。然后将当前符号+号入栈 接着是10数字成为后缀表达式一部分,然后是÷号 比+号优先级高 入栈,接着是数字2继续成为后缀表达式一部分。到此可以看到已经初步结束了,这个时候栈中从下到上还留有+ 和 / 依次出栈。所以最终的后缀表达式结果为如图: 9 3 1 — 3 * + 10 2 / +

2:后缀计算:931依次进栈 然后遇到符号—,所以如图3-1=2,2再入栈,3再入栈,接着遇到符号*,2×3 = 6,6入栈。接着是符号+,9+6=15,15入栈,10和2入栈,接着遇到/号。10/2=5,5入栈,接着遇到+号。15+5=20。最终结果就是为20.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值