如何用栈来实现加减乘除幂的运算呢?应考虑下面几点。
1.分别用一个栈x存符号,另一个栈y存数值。
2.遇到数字就压栈,遇到符号ch要比较栈顶的符号与当前的符号ch,编写一个判别函数prev,若能进行运算,则返回真,不能返回假.以下是判别函数的几种情况:
(1)如果栈顶符号为* ^ / 则不用考虑输入拿来比较的符号,直接返回真。
(2)如果栈顶符号和拿来比较的符号ch为+或者-,也返回真.
(3)其他遇到栈顶元素为括号或者栈顶符号为+or-,而ch为* / ^等等情况,直接返回假。
代码如下:
bool prev(char s1,char s2 ){ //判断符号s1 与 s2 的优先级别的函数
if(s1=='^'||s1=='*'||s1=='/') //如果栈顶符号为* ^ / 则不用考虑输入拿来比较的符号,直接返回真
return true;
else if((s1=='+'||s1=='-')&&(s2=='+'||s2=='-')) //如果栈顶符号和拿来比较的符号为+或者-,也返回真
return true;
else
return false; //其他情况都返回假
}
3.编写计算函数res