将中缀表达式“a-(b+c/d)*e”转换为后缀表达式的过程如下:
| S2(栈底->栈顶)数字 | S1 (栈底->栈顶)操作符 | 说明 | |
a | a | 空 | 数字,直接入栈 | |
- | a | - | S1为空,运算符直接入栈 | |
( | a | -( | (,直接入栈 | |
b | ab | -( | 数字,直接入栈 | |
+ | ab | -(+ | S1,栈顶为左括号,运算符直接入栈 | |
c | abc | -(+ | 数字,直接入栈 | |
/ | abc | -(+/ | /比+优先级高,则直接压栈 | |
d | abcd | -(+/ | 数字,直接入栈 | |
) | abcd/+ | - | 右括号,弹出运算符到s2直至遇到左括号 | |
* | abcd/+ | -* | *比+优先级高,则直接压栈 | |
e | abcd/+e | -* | 数字直接入栈 | |
到达最右端 | abcd/+e*- | 空 | 弹出s1中剩余的运算符 | |
结果为:abcd/+e*- | | | | |
| | | |