中綴表達式轉后綴表達式

算法:

中綴表達式轉后綴表達式的方法:

1.遇到操作數(shù):直接輸出(添加到后綴表達式中)

2.棧為空時,遇到運算符,直接入棧

3.遇到左括號:將其入棧

4.遇到右括號:執(zhí)行出棧操作,并將出棧的元素輸出,直到彈出棧的是左括號,左括號不輸出。

5.遇到其他運算符:加減乘除:彈出所有優(yōu)先級大于或者等于該運算符的棧頂元素,然后將該運算符入棧

6.最終將棧中的元素依次出棧,輸出。

例如:a+b*c-(d+e)/f? =》abc*+de+f/-

操作步驟:

1:遇到a:直接輸出

? ? ?后綴表達式:a

? ? ? 堆棧:空

2:遇到+: 直接入棧

? ? ?后綴表達式:a

? ? ? 堆棧:+

3:遇到b: 直接輸出

? ? ?后綴表達式:ab

? ? ? 堆棧:+

4:遇到*:?入棧比較(*優(yōu)先級大于棧+,所有直接入棧)

? ? ?后綴表達式:ab

? ? ? 堆棧:*+

5:遇到c:?直接輸出

? ? ?后綴表達式:abc

? ? ? 堆棧:*+

6:遇到-:?入棧比較(-優(yōu)先級小于棧中*或等于+,彈出*+,把-入棧)

? ? ?后綴表達式:abc*+

? ? ? 堆棧:-

7:遇到(: 直接入棧

? ? ?后綴表達式:abc*+

? ? ? 堆棧:(-

8:遇到d: 直接輸出

? ? ?后綴表達式:abc*+d

? ? ? 堆棧:(-

9:遇到+: 入棧比較(+優(yōu)先級大于(或等于-,直接入棧)

? ? ?后綴表達式:abc*+d

? ? ? 堆棧:+(-

10:遇到e: 直接輸出

? ? ?后綴表達式:abc*+de

? ? ? 堆棧:+(-

11:遇到): 執(zhí)行出棧操作,直到(,(不輸出

? ? ?后綴表達式:abc*+de+

? ? ? 堆棧:-

12:遇到/: 入棧比較(/優(yōu)先級大于棧中-,直接入棧)

? ? ?后綴表達式:abc*+de+

? ? ? 堆棧:/-

13:遇到f:直接輸出

? ? ?后綴表達式:abc*+de+f

? ? ? 堆棧:/-

14:遇到中綴表達式結束:彈出所有的運算符并輸出

? ? ?后綴表達式:abc*+de+f/-

? ? ? 堆棧:空

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容