后缀表达式做计算器程序

后缀表达式是相较于中缀表达式而言的,像我们平时写的2+3*(4-(5+6))/7就是一个中缀表达式,那么如何将之变为后缀表达式呢?后缀表达式如何用来求解呢?

 

先来第一个问题(中缀->后缀):

变为后缀表达式方法(规则)

1.遇到操作数:直接添加到后缀表达式中

2.栈为空时,遇到运算符,直接入栈

3.遇到左括号:将其入栈

4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出。

5.遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后将该运算符入栈。

6.最终将栈中的元素依次出栈,输出。

 

用一个实例来分析:

X = 2+3*(4-(5+6))/7

1、遇到操作数2,添加到后缀表达式中                                                             2    

2、栈为空,遇到加号‘+’,将‘+’入栈                                                          2

3、遇到操作数3,添加到后缀表达式中                                                             23

4、遇到操作符‘*’,栈顶为‘+’‘*’优先级大于‘-’,不出栈,‘*’入栈         23

5、遇到左括号,直接入栈。                                                                        23

6、遇到操作数4,添加到后缀表达式中                                                             234

7、遇到减号‘-’,栈顶为‘-’入栈                                                                   234

8、遇到左括号,直接入栈。                                                                         234

9、遇到操作数5,添加到后缀表达式中                                                              2345

10、遇到加号‘+’,栈顶为‘(’, ‘+’入栈                                                      2345

11、遇到操作数6,添加到后缀表达式中                                                            23456

12、遇到右括号’(不入栈),出栈‘+’,出栈(不添加到后缀表达式中)      23456+

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxjyg.html