后缀表达式、前缀表达式

来源:互联网 发布:英国的域名 编辑:程序博客网 时间:2024/05/18 02:31

         后缀表达式和前缀表达式是什么呢?

         前缀表达式:不包括括号的算术表达式,将运算符写在前面,操作数写在后面的表达式。为纪念其发明者波兰数学家Jan Lukasiewcz,也称“波兰式”。

         后缀表达式:不包括括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行。也称“逆波兰式”

         举个栗子:

                          3+4            这是中序表达式(就是我们平时的写法)

                          34+            这就是后缀表达式

                          +34            即前缀表达式

         

         那么如何把中序表达式写成后缀或者前缀的形式呢?

         手动转:

                     例:3+(2-5)*6/3

                     转后缀:先将它根据运算顺序加上括号,即   (3+(((2-5)*6)/3))

                                   然后从最开始的括号开始,保留数字,把当前运算所用的运算符放到该括号后面

                                   第一步:(3+(((25)-*6)/3))        这里算的是2-5,所以保留2和5,把-放到(2-5)这个括号后

                                   第二步:(3+(((25)-6)*/3))        这里算的是(2-5)*6,为乘运算,所以把*放到该运算括号后

                                   第三步:(3+(((25)-6)*3)/)        以此类推

                                   第四步:(3(((25)-6)*3)/)+         

                                   第五步:325-6*3/+                  最后删掉所有括号就好啦

                     如果你不确定是否正确,用后缀表达式计算一下值,两式值一样就对啦

                     转前缀:同样先加括号,即(3+(((2-5)*6)/3))

                                   然后从最开始的括号开始,保留数字,把当前运算所用的运算符放到前面!(和后缀相反)

                                   第一步:(3+((-(25)*6)/3))        把-放到括号前面

                                   第二步:(3+(*(-(25)6)/3))        以此类推

                                   第三步:(3+/(*(-(25)6)3))

                                   第四步:+(3/(*(-(25)6)3))

                                   第五步:+3/*-2563

                     同样,不确定的话,验证一下

         那么后缀表达式是如何进行计算的呢?

         例:325-6*3/+

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

                1.首先,我们初始化一个空栈,此栈用来进出数字。

                2.后缀表达式前三个都是数字,所以进栈

                3. -  不是数字,所以 2 和 5 出栈,进行运算,(这里注意后出栈的在运算符前面,即 2 后出,所以是 2 - 5 ),将运算结果入栈(-3)

                4.数字 6 入栈

                5. *  不是数字,所以 -3 和 6 出栈,-3 * 6 = -18,-18 入栈

                6. 数字 3 入栈

                7.  /  不是数字,所以 3 和 -18 出栈,-18 / 3 = -6 , -6 入栈

                8. +  不是数字,所以 3 和 -6 出栈, 3 + ( -6 ) = -3

                9.运算结束

                图示:

                             对于前缀表达式的运算后续更新......

原创粉丝点击