逆波兰表达式简介
各位观众大大好久不见咯,好久木有上来打理自己的博客了,最近开始期末考试了,而小达也好久都没去上过课了,所以你们懂的,出来混的总是要还的哈。想写关于逆波兰表达式的东西好久了,一直都没抽出时间来(其实就是懒)废话不多说,就是干,今天小达给大家带来了自己学习逆波兰表达式的看法。在讲你波兰表达式时会结合一个简易计算器的开发一起讲,将逆波兰表达式直接运用于实践中,应该更好理解吧。
我们先来看看什么是逆波兰表达式,其实我也背不下定义,我们来看看是怎么个情况哈,逆波兰表达式又叫做后缀表达式。在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之间,这种表示法也称为中缀表示。波兰逻辑学家J.Lukasiewicz于1929年提出了另一种表示表达式的方法,按此方法,每一运算符都置于其运算对象之后,故称为后缀表示。
这种东西到底有什么好处呢?下面两个式子计算结果应该是一样的,只是表达的方式不同。
<span style="font-size:14px;"> 正常的表达式(中缀表达式): a + d * ( b - c )</span>
<span style="font-size:14px;"> 逆波兰表达式(后缀表达式): a , d , b , c , - , * , + (中间的逗号不要管)</span>
我们一般写的算术表达式就是所谓的中缀表达式,让人来计算中缀表达式可能很简单,但是计算机就不行了,为了让计算机也能快速的计算,我们需要将中缀表达式转换为后缀表达式,在后缀表达式中,可以通过运算符的优先级和摆放的次序来代替中缀表达式的括号,而在计算的时候也只需要从符号堆栈和数字堆栈中进行存取和计算就能达到目的。
我们以下面这个中缀表达式为例子,手动一步一步的将它转化为后缀表达式。先建立一个堆栈来存储运算符。有人说堆栈是什么,请看