中綴轉字尾過程:
1. 對於數字:直接輸出
2. 對於符號:
2.1 左括號:進棧
2.2 運算符號:(與棧頂符號進行優先順序比較,若棧頂符號優先順序低:此符號進棧;若棧頂符號優先順序不低:將棧頂符號彈出並輸出,之後進棧)
若是乘除直接進棧;
若是加減,與棧頂比較,若棧頂是乘除,直接輸出,否則進棧。
2.3 右括號:將棧頂符號彈出並輸出,直到匹配左括號
遍歷結束:將棧中的所有符號彈出並輸出
字尾表示式的求值:
如果是數字壓入棧中;如果是操作符,則從棧中退出兩個運算元,運算後壓入棧中;最後棧頂存放的就是計算結果。
#include #include #include using namespace std;
int isnumber(char a)
int isleft(char a)
int isright(char a)
int isplusormimus(char a)
int ismultiordivi(char a)
int main()
if (isleft(str[i]))
if (isright(str[i]))
else
}} if (isplusormimus(str[i]))
}} if (ismultiordivi(str[i]))
} while (s.size())
cout << endl;
system("pause");
return 0;
}
棧的應用 中綴表示式轉字尾表示式
有關棧api詳情請參看我的另一篇博文 棧的鏈式儲存 api實現 例項 5 4 5 4 1 2 3 1 2 3 8 3 1 5 8 3 1 5 中綴表示式符合人類的閱讀和思維習慣 字尾表示式符合計算機的 運算習慣 中綴轉字尾演算法 遍歷中綴表示式中的數字和符號 對於數字 直接輸出 對於符號 左括號 進...
棧的應用 (中綴表示式 轉 字尾表示式)
中綴表示式 字尾表示式,都是用來呈現運算表示式的一種方式。標準表示式 4 5 6 7 中綴表示式,就是標準的表示式,即4 5 6 7 字尾表示式,符號在後的表示式,即4 5 6 7 中綴表示式轉字尾表示式的思想是 注意的是 只有 這5種符號才會入棧 1.讀到運算元時,立即輸出 2.讀到的是操作符,分...
棧的應用 中綴表示式轉字尾表示式
如果是數字,則直接輸出 如果是左括號,直接入棧 如果是右括號,出棧,直到遇到第乙個左括號 如果是 或者 出棧,直到棧空或者左括號或者遇到 當前符號入棧 如果是 或者 出棧,直到棧空或者左括號,當前符號入棧 如果中綴表示式走完,將棧中的內容全部彈出 1.如果是數字,直接輸出 如下 if isdigit...