实现功能:1、输入包含 加、减、乘、除、括号等运算符和0-9数字的表达式,输出表达式计算结果;
2、表达式包含多位整数、小数,如 (2.5+3.15)/0.69;(选做)
说明:代码把“=”作为结束指令,所以在输入表达式时最后要加等于号
大体思路:用两个栈,一个操作符栈,一个数据栈,数据栈存表达式的数据,操作符栈存()+ - * /等。将中缀表达式转换为后缀表达式,在转换的过程中求表达式的值具体步骤如下:
先将一个‘=’放入操作符栈
1:读取表达式的一个字符;
2: 若为数字存入数据栈转至1;
3:若为操作符:比较操作符栈顶和该操作符的优先级
① pk函数返回值为‘>’(若操作符栈顶优先级大于或等于该操作符的优先级):栈顶操作符出栈(假设操作符为-),从数据栈出两个数据(假设第一个是y,第二个是x),计算值(x-y),将值放入数据栈转至3;
② pk函数返回值为‘<’(若操作符栈顶优先级小于该操作符的优先级): 把该操作符放入操作符栈,转至1;
③ pk函数返回值为‘=’将操作符栈顶的操作符出栈,转至1;
4:输出数据栈栈顶值。
1