棧 中綴表示式轉字尾表示式 stack實現

2021-10-07 09:23:58 字數 1339 閱讀 8611

題目描述

輸入乙個中綴表示式,程式設計輸出其字尾表示式,要求輸出的字尾表示式的運算次序與輸入的中綴表示式的運算次序相一致。為簡單起見,假設輸入的中綴表示式由+(加)、-(減)、×(乘)、/(除)四個運算符號以及左右圓括號和英文本母組成,其中算術運算子遵守先乘除後加減的運算規則。假設輸入的中綴表示式長度不超過300個字元,且都是正確的,即沒有語法錯誤,並且凡出現括號其內部一定有表示式,即內部至少有乙個運算符號。

中綴表示式轉字尾表示式的方法:

1.遇到運算元:直接輸出(新增到字尾表示式中)

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

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

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

5.遇到其他運算子:加減乘除:彈出所有優先順序大於或者等於該運算子的棧頂元素,然後將該運算子入棧

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

輸入只有一行,為中綴表示式

輸出只有一行,為轉換後的字尾表示式

樣例輸入

x+a*

(y-b)

-z/f

樣例輸出

棧 中綴表示式轉字尾表示式

中綴轉字尾的演算法 遍歷中綴表示式中的數字和符號 對於數字 直接輸出 對於符號 左括號 進棧 運算符號 與棧頂符號進行優先比較 若棧頂符號優先順序低 此符號進棧 預設棧頂若是左括號,則左括號的優先順序最低 若棧頂符號優先順序高 將棧頂符號彈出 並輸出 直到棧頂的符號優先順序低,然後進棧 右括號 將棧...

中綴表示式轉字尾表示式

using system using system.collections.generic using system.text namespace 中綴表示式轉字尾表示式 class convert public void run top break case case while top 1 st...

中綴表示式轉字尾表示式

將乙個普通的中綴表示式轉換為字尾表示式的一般演算法是 首先需要分配2個棧,乙個作為臨時儲存運算子的棧s1 含乙個結束符號 乙個作為輸入字尾表示式的棧s2 空棧 s1棧可先放入優先順序最低的運算子 注意,中綴式應以此最低優先順序的運算子結束。可指定其他字元,不一定非 不可。從中綴式的左端開始取字元,逐...