栈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)进行最后一次计算,输出结果
如果运算符栈内没有元素,则操作数栈内只有一个元素,就是结果
(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)进行最后一次计算,输出结果
如果运算符栈内没有元素,则操作数栈内只有一个元素,就是结果
相关文章推荐
- 简单算数表达式求值
- 算数表达式求值
- 算数表达式求值
- QT算数表达式求值
- 运用栈对算数表达式求值
- 算数表达式求值
- C语言 算数表达式求值(顺序栈应用实例)
- 算数表达式求值(中缀表达式转后缀表达式并求值)
- 栈的运用(算数表达式求值的算符优先算法 十以内简单版)
- CDOJ 1074 秋实大哥搞算数(栈_表达式求值)
- 算数表达式求值
- 算法(第四版) Dijkstra 算数表达式求值算法-双栈
- 算数表达式求值
- 算数表达式求值(C语言)
- 算数表达式求值C++实现
- Dijkstra 的双栈算数表达式求值算法的学习
- 2015 UESTC 数据结构专题N题 秋实大哥搞算数 表达式求值/栈
- C++ 实现 算数表达式求值
- Dijkstra的双栈算数表达式求值算法
- 2016 UESTC Training for Data Structures N - 秋实大哥搞算数 CDOJ 1074 栈 表达式求值