表达式求解是栈应用一个典型的例子,其基本算法思想为:
1.首先初始化1个运算数栈和1个运算符栈,运算符栈填入‘=’表示栈空。
2.对输入表达式进行逐字节解析,如果是操作数,则直接压入运算数栈,如果是运算符则进行一下比较:
(1)如果栈顶运算符优先级低于读入运算符优先级,则将运算符压栈,继续解析下面的字节;
(2)如果是同级的运算符则直接出栈,说明是左括号,完成去括号工作;
(3)如果栈顶运算符优先级高于读入的运算符,则出栈两个运算数和一个运算符,计算结果,压入运算数栈中。
3.当遇到'='则返回结果。
运算符比较遵循下面的规律:
1.同级运算符在栈内的运算符优先级高于栈外运算符优先级;
2.不同级运算符优先级部分栈内栈外,按照算术运算规律确定;
3.左括号在栈外优先级最高,在栈内优先级最低,但优先级和栈外右括号相同(进行去括号);
4.右括号在栈内优先级都最高,栈外优先级最低,在栈外时仅与栈内的左括号同级;
5.‘=’在栈内优先级最低。
演示代码如下:
输入(4+2)*3-15=回车即可求解。
<