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