四则运算表达式 逆波兰表达式

感觉是一块比较偏门的东西,特此记录下:

逆波兰表达式:

或者叫后缀表达式,我们原先用的一直都是中缀表达式,但是因为如果表达式过长,计算机计算起来不方便。需要先遍历一边,找出其中的()进行优先计算,如果有多个()叠加的话就更麻烦了。于是为了计算机的方便计算,将中缀表达式转换成后缀表达式,计算机便可以使用栈的特性,来快速的计算一个表达式。至于逆波兰表达式这个名字,相传是因为这个波兰人的名字太复杂了,所以就用国籍命名了。

中缀表达式转化成为逆波兰表达式:

规则:从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分,若是符号,则判断其与栈顶符号的优先级,是右括号或优先级不高于栈顶符号则栈顶元素依次出栈并输出,并将当前符号进栈,只到最终输出后缀表达式为止。

例如:9+(3-1)*3+10/2

1.输出9,栈:+

2.输出93,栈+(

3.输出931,栈+(-

4.输出931-,栈+

5.输出931-3,栈+*

6.输出931-3*+,栈+

7.输出931-3*+10,栈+/

8.输出931-3*+10 2,栈+/

9.输出931-3*+10 2/+


逆波兰表达式求值:

规则:从左到右遍历表达式的每个数字和符号,遇到是数字就进栈,遇到的是符号,就将处于栈顶两个数字出栈,进行运算,运算结果进栈,一直到最终获得结果。

例如:931-3*+10 2/+

1.栈931

2.计算3-1,栈92

3.栈923

4.计算2*3,栈96

5.计算9+6,栈15

6.栈15 10 2

7.计算10/2,栈15 5

8.计算15+5,栈20


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值