前、中、后缀表达式(逆波兰表达式)
2023-02-03 16:31:01 0 举报
波兰式、逆波兰式、波兰表达式、逆波兰表达式 前缀表达式、中缀表达式、后缀表达式 中缀转换前缀表达式 中缀转换后缀表达式
作者其他创作
大纲/内容
-
+
6
3
x
①从右到左扫描中缀表达式②遇到数字压入S2③遇到操作符,与S1的栈顶比较 a.如果S1为空,或者栈顶是 ),直接入栈S1 b.否则,如果符号优先级比栈顶高或者相等,直接入栈S1 c.否则,S1顶出栈,压入S2。然后继续回到步骤a比较。④遇到括号的时候 a. ) :直接压入S1 b. ( :依次把S1弹出,压入S2,直到遇上 )。括号可以丢弃⑤重复上述扫描步骤,直到扫描完成⑥S1中如果还有元素,全部弹出压入S2⑦S2依次弹出得到前缀表达式
S1
4
中缀表达式→后缀表达式
①从左到右扫描中缀表达式②遇到数字压入S2③遇到操作符,与S1的栈顶比较 a.如果S1为空,或者栈顶是 (,直接入栈S1 b.否则,如果符号优先级比栈顶高或者相等,直接入栈S1 c.否则,S1顶出栈,压入S2。然后继续回到步骤a比较。④遇到括号的时候 a. ( :直接压入S1 b. ) :依次把S1弹出,压入S2,直到遇上 ( 。括号可以丢弃⑤重复上述扫描步骤,直到扫描完成⑥S1中如果还有元素,全部弹出压入S2⑦S2依次弹出得到前缀表达式
S2
5
入栈结果
)
①从右到左扫描②遇到数字入栈③遇到运算符出栈两个数字(先出栈在左)进行计算,计算结果再入栈④扫描结束后把数字出栈就是计算结果
35
=
29
(3+4)x5-6
全部弹出
7
①从左到右扫描②遇到数字入栈③遇到运算符出栈两个数字(先出栈在右)进行计算,计算结果再入栈④扫描结束后把数字出栈就是计算结果
出栈最终结果
34+5x6-
入栈
(
出栈参数
-x+3456
中缀表达式→前缀表达式
后缀表达式(逆波兰式):34+5x6-
前缀表达式(波兰式):-x+3456
计算方法
逆序
(3+4)x5-6
以 (3+4)x5-6 为例子,求前后缀表达式。中缀表达式:(3+4)x5-6 前缀表达式:-x+3456 后缀表达式:34+5x6-
0 条评论
下一页