什么叫逆波兰表达式?

来源:互联网 发布:php 三目运算符 简写 编辑:程序博客网 时间:2024/05/01 05:10

举个栗子:

现在我们学的1+1,这叫做中缀表达式,就是运算符处于两个值之间的,这叫做中缀表达式。

逆波兰表达式,又称为后缀表达式,你猜猜是怎样表示的呢?棒棒的你一定能猜出来,没错就是运算符在后面的表达式呗。

1 1 +这叫做逆波兰表达式咯,很简单吧。波兰逻辑学家J.Lukasiewicz于1929年提出了另一种表示表达式的方法,按此方法,每一运算符都置于其运算对象之后,故称为后缀表示。

为啥不以作者名字命名这个表达式呢。当然是因为这个坐着的名字冗长,不便于学习交流啦。

逆波兰表达式,它的语法规定,表达式必须以逆波兰表达式的方式给出。逆波兰表达式又叫做后缀表达式,下面是一些具体的例子:
正常的表达式 逆波兰表达式
a+b ---> a,b,+
a+(b-c) ---> a,b,c,-,+
a+(b-c)*d ---> a,b,c,-,d,*,+
a+d*(b-c)--->a,d,b,c,-,*,+
a=1+3 ---> a=1,3 +
逆波兰表达式是一种十分有用的表达式,它将复杂表达式转换为可以依靠简单的操作得到计算结果的表达式。例如(a+b)*(c+d)转换为ab+cd+*
为啥我们放着好好的中缀表达式不用,偏要出奇用这个东西?只是为了显得高深一点么?当然不是,人类喜欢中缀表达式计算,可计算机计算起来就没那么容易了,
你想想几层括号,又要考虑优先级,只用if套,套套套多麻烦呀。
它的优势在于只用两种简单操作,入栈和出栈就可以搞定任何普通表达式的运算。其运算方式如下:
如果当前字符为变量或者为数字,则压栈,如果是运算符,则将栈顶两个元素弹出作相应运算,结果再入栈,最后当表达式扫描完后,栈里的就是结果。

欢迎来到我的IT 博客http://www.nightsong.cc
QQ:1623231307

0 0
原创粉丝点击