問題描述:
請編寫程式將乙個中綴表示式轉換為字尾表示式。
輸入僅一行,是乙個中綴表示式。輸入的符號中只有這些基本符號「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...