前綴式、中綴式、后綴式相互轉換
一. 中綴式轉化成前綴式和后綴式:
一個中綴式到其他式子的轉換方法
這里我給出一個中綴表達式
a + b * c - ( d + e )
第一步:按照運算符的優先級對所有的運算單位加括號
式子變成:( ( a + ( b * c ) ) - ( d + e ) )
第二步:轉換前綴與后綴表達式
中綴轉前綴:
把運算符號移動到對應的括號前面
則變成:- ( + ( a * ( b c ) ) + ( d e ) )
把括號去掉:- + a * b c + d e 前綴式子出現
中綴轉后綴:
把運算符號移動到對應的括號后面
則變成:( ( a ( b c ) * ) + ( d e ) + ) -
把括號去掉:a b c * + d e + - 后綴式子出現
二. 前綴式轉化成中綴式:
+ a * b c + d e
從后往前遇到運算符,將其與后面兩個運算數結合,加上括號,當成新的運算數(例如:* b c 加上括號,變成 ( * b c )一個整體,作為運算數)
變成:( - ( + a ( * b c ) ) ( + d e ) )
將運算符加在括號內運算數中間。變成:
( ( a + ( b * c ) ) - ( d + e ) )
去掉部分括號:a + b * c - ( d + e )
(最后去掉的是不影響運算式含義的多余括號)
三. 后綴式轉化成中綴式:
a b c * + d e + -
從前往后遇到運算符,將其與前面兩個運算數結合,加上括號,當成新的運算數
變成:( ( a ( b c * ) + ) ( d e + ) - )
將運算符加在括號內運算數中間。變成:
( ( a + ( b * c ) ) - ( d + e ) )
去掉部分括號:a + b * c - ( d + e )
(最后去掉的是不影響運算式含義的多余括號)
(隨筆參考了csdn,原文https://blog.csdn.net/tomcmd/article/details/48603097,有刪改)