您的位置:首页 > 其它

栈3-算数表达式求值

2016-07-31 15:32 253 查看
算术表达式计算,依靠两个栈:操作数栈p1和运算符栈p2。对于输入的String,从左到右读如每个字符c:

(1)c为操作数,则入栈p1.push(c)

(2)c为操作数,如果优先级c>top(top为运算符栈的栈顶元素,eg:c为*,top为+)则p2.push(c),继续读下一个字符

                                如果c为‘(’,p2.push(c)

                               如果c为‘)’ :从操作数栈中pop两个数,按照p2.pop()运算进行计算,结果push到操作数栈,直到p2.pop()==‘(’。读String中的下一个字符

                              优先级c<top(eg:c为+,top为*)则操作数栈pop连个数,进行top计算,结果入栈,在继续比较p2的新top和c的优先级

(3)当输入String读人结束,如果此时运算符栈还有元素,则操作数栈中有两个数(+ 3,5)进行最后一次计算,输出结果

                                                      如果运算符栈内没有元素,则操作数栈内只有一个元素,就是结果



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: