关于栈用于表达式求值的问题!紧急!例如:用栈方式求表达式“46+5*(120-37)”其后缀表达式为“46 5 120 37 - * +”计算过程为:1、依次将46,5,120,37压入栈中;2、遇到“-”取37,120,计算120-37,得83,将其压入栈中;3、遇到“*”取出83,5,计算83*5,得415,将其压入栈中;4、遇到“+”,取出415,46,计算46+415,得461,将其压入栈中;5、表达式结束,计算过程完成.现在问题就出现了:假如我将表达式写成“5*(120-37)+46”.按照从左至右的顺序扫描后缀表达式,则压入栈的顺序为“5,120,37,46”因为栈先入后出的特点,这样计算就会出现问题.

问题描述:

关于栈用于表达式求值的问题!紧急!
例如:用栈方式求表达式“46+5*(120-37)”
其后缀表达式为“46 5 120 37 - * +”计算过程为:
1、依次将46,5,120,37压入栈中;
2、遇到“-”取37,120,计算120-37,得83,将其压入栈中;
3、遇到“*”取出83,5,计算83*5,得415,将其压入栈中;
4、遇到“+”,取出415,46,计算46+415,得461,将其压入栈中;
5、表达式结束,计算过程完成.
现在问题就出现了:假如我将表达式写成“5*(120-37)+46”.
按照从左至右的顺序扫描后缀表达式,则压入栈的顺序为“5,120,37,46”
因为栈先入后出的特点,这样计算就会出现问题.

在运算之前要先判断是不是应该做这个运算,有没有更优先级的运算.
比如做加法之前判断后面是不是乘法