資料結構 中綴到字尾的轉換

2021-06-22 09:18:01 字數 645 閱讀 3378

問題描述:

請編寫程式將乙個中綴表示式轉換為字尾表示式。

輸入僅一行,是乙個中綴表示式。輸入的符號中只有這些基本符號「0123456789+-*/()」,並且不會出現形如2*-3的格式,所有數字都是個位數,「/」表示整除運算。

輸出僅一行,是轉換後的字尾表示式。數字之間、運算子之間、數字和運算子之間都用乙個空格隔開(參見樣例)。

樣例.in

8-(3+2*6)/5+4

.out

8 3 2 6 * + 5 / - 4 +

#include #include #include using namespace std;

int prior(char op)

string middletolast(string middle)

else

op.pop();

}else

else

op.push(c);}}

}}}}

while(!op.empty())

return ans;

}int main()

{ string mdata,res;

cin>>mdata;

res=middletolast(mdata);

for(int i=0; i

中綴到字尾的轉換

我們平常所寫的標準形式的表示式叫做中綴式,我們可以用棧來把他轉換成字尾式。假設只允許操作 並堅持普通的優先順序發則。還要假設表示式是合法的。如將表示式 a b c d e f g轉換成字尾式是a b c d e f g 思路 當讀到乙個運算元時,立即把他放到輸出中。而把操作符放進乙個棧中。當遇到左括...

資料結構 棧 中綴 字尾 字首相互轉換

中綴 正常表示式 字尾 逆波蘭式 1 棧中存符號 2 字母 數字直接列印 3 先進棧,再比較優先順序,只有當比棧中前乙個符號優先順序高的情況下才走下去,否則彈出前乙個符號,直至前乙個符號的優先順序小於這個符號,也即是連續彈棧。4 列印的時候遇到括號不計在內,但是在棧中括號是被儲存過的,當遇到 時,按...

中綴到字尾的轉換 棧實現

include include include include 2018.4.4 棧的鍊錶實現 stack initial stack int isempty stack s void dispose stack stack s void push stack s,elementtype x voi...