方法1:
该方法来自严蔚敏版数据结构,基本思路是:设置两个工作栈,一个操作数栈,一个操作符栈,在(自左至右)扫描算术表达式时,遇到操作数直接入操作数栈,若遇到操作符,则根据操作符优先级判断下一步操作(
“操作符优先级规则
”):若其优先级高于栈顶操作符,则入栈,否则(相等或小于),弹出栈顶算符并从操作数栈弹出两个操作数,计算,将计算结果入操作数栈,继续比较与栈顶操作符的优先级,若仍然等于或低于之,则计算,直至大于之,则将此操作符入栈;左括号一定入栈,且其优先级低于后续来到的任何操作符,右括号一定出栈并计算直至遇到左括号,另外栈的开始以“#”开始,算术表达式以“#”结束,做结束标志。当栈空时,计算结束。
方法2:
采用后缀表达式,即“逆波兰式”,因为计算机处理后缀表