棧 中綴 字尾表示式

2021-08-22 13:39:49 字數 1067 閱讀 3139

利用棧計算字尾表示式

#include 

#include

#include

using

namespace

std;

int main()

s.push( num );

--i;

//cout<<"i: "<}

else

if( str[i]=='+'||str[i]=='-'||str[i]=='*'||str[i]=='/' )

s.push( res );}}

cout

<<"result: "

0;}

利用棧,把中綴表示式變成字尾表示式
#include 

#include

#include

#include

using

namespace

std;

int main()

//遇到運算子

else

if( str[i]=='+'||str[i]=='-'||str[i]=='*'||str[i]=='/' )

//如果棧不空,判斷當前運算子的優先順序。從棧頂開始,將棧中優先順序 <= 它的都輸出。

else

if( priority[str[i]] <= priority[s.top()] )

s.push( str[i] );

}//如果該運算子優先順序比棧頂高,則壓入棧。

else

}//如果是 ( ,直接壓入棧

else

if( str[i]=='(' )

// 一旦遇到 ) ,從棧頂開始輸出,直到遇到 ( ,左括號不輸出,但彈出

else

if( str[i]==')' )

s.pop();}}

//上面完成之後,如果棧內還有剩餘運算子沒有輸出,都輸出

if( !s.empty() )

cout

<' ';

s.pop();}}

return

0;}

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

題目 給乙個中綴表示式 即標準形式的表示式 列印該表示式的字尾表示式。中綴表示式最大的不同就是去掉了表示運算子優先順序的括號。運算元為26個小寫或大寫的英文本母 注意不包括數字和其他字元 操作符為 一共八個。具體見例子見下圖 如下 include include include using name...

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

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

中綴表示式 字尾表示式

中綴表示式就是 a b 這樣的,運算子在兩個數的中間 字尾表示式就是 a b 這樣的,運算子在兩個數後面 再細分一下 中綴表示式 字尾表示式 a b c a b c a b c a b c a b c a b c a b c a b c a b c d e a c a b c d e a c emm...