这里介绍的是将中缀表达式转换成后缀表达式,然后求值。
中缀表达式转换成后缀表达式需要一个栈来保存操作符。
转换的具体规则如下:
| 从输入中读取的字符 | 动作 |
| 操作数 | 写至输出 |
| 左括号( | 推其入栈 |
| 右括号) |
栈非空时,重复以下步骤: 弹出一项,若项不为(,则写至输出。项为(则退出循环 |
| 操作符(opThis) |
若栈为空,推入opThis,否则,栈非空时,重复步骤: 弹出一项 若项为(,推其入栈 若项为操作符(opTop),则 若opTop<opThis,推入opTop 若opTop>=opThis,输出opTop 若opTop<opThis则退出循环,或项为(,推入opThis |
| 没有更多项 | 当栈非空时,弹出项目,将其输出 |
后缀表达式求值如下:
| 从后缀表达式中读取的元素 | 执行的动作 |
| 操作时 | 入栈 |
| 操作符 | 从栈中提出两个操作数,用操作符将其运算。结果入栈 |
1030

被折叠的 条评论
为什么被折叠?



