利用栈将中缀表达式转化成后缀表达式

目的:将中缀表达式(即标准形式的表达式)转换为后缀式。

例子:a+b*c+(d*e+f)*g转换成abc*+de*f+g*+

 

转换原则

1. 遇到操作数, 直接输出

2. 操作符的优先级为 () 最大, * / 次之, +- 最小. 遇到操作符后, 假如操作符堆栈为空, 则直接压入操作符, 否则判断当前操作符与栈顶操作符的优先关系, 假如栈顶操作符的优先级大于 等于当前操作符的优先级, 那么弹出栈顶操作符, 持续弹出, 直到栈顶操作符优先级小于当前操作符优先级或栈为空. 最后将当前操作符入栈

3. 如果遇到右括号, 那么将栈顶操作符弹出, 持续弹出直到遇到左括号, 左括号弹出但不输出

4. 表达式读入完毕, 若栈不为空, 则持续弹出栈顶操作符, 直到栈为空

 

题目

1. 九度题目1019:简单计算器

2. 九度题目1101:计算表达式

3. 九度题目1498:寻找表达式

posted @ 2014-03-10 14:47  SangS  阅读(4808)  评论(1编辑  收藏  举报