在数据结构中求运算表达式的值大抵有三种方法前缀表达,中缀表达和后缀表达式,这我说下我写中缀表达式的方法。
可以使用栈来存储输入表达式的操作符和操作数。 输入的表达式是由操作数(又称运算对象)和运算符以及改变运算次序的圆括号连接而成的式子。算术表达式为中缀表示法,本程序输入的表达式采用中缀表示法,在这种表达式中,二元运算符位于两个操作数中间。 由于不同运算符之间存在优先级,同一优先级的运算间又存在着运算结合顺序的问题,所以简单的从左到右的计算是不充分的。当然凭直观判断一个中缀表达式中哪个运算符最先,哪个次之,哪个最后并不困难,但是机器中还需要利用栈做一些先后符号的判断以确定先运行哪个计算。
中缀表达式对应于二叉树的中序遍历,利用两个栈,一个压入操作符,一个压入值。
以浮点型输入输出,成为后缀表达式的一部分;若是运算符,则与栈顶的运算符进行 比较,若 “当前>栈顶,则入栈,当前<=栈顶,则出栈“直至扫描结束,最后把规定字符之前的都输出。
| + | - | * | / | ( | ) | % | ^ | # |
+ | > | > | < | < | < | > | < | < | > |
- | > | > | < | < | < | > | < | < | > |
* | > | > | > | > | < | > | > | < | > |
/ | > | > | > | > | < | > | > | < | > |
% | > | > | > | > | < | > | > | < | > |
( | < | < | < | < | < | + | < | < | 0 |
) | > | > | > | > | 0 | > | > | > | > |
^ | > | > | > | > | < | > | > | < | > |
# | < | < | < | < | < | 0 | < | < | = |
我的思路就是利用一个二维数组放入符号优先级判断,两个对比时候把两个符号参数传入然后返回符号,然后判断后进行运算。
附上我之前写的一个从记事本中导入数据然后把结果输出到另一个记事本中的小东西。点击打开链接
菜鸟第一次写博客,请大家多多包涵。