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

2022-10-03 23:12:21 字數 976 閱讀 7741

1、初始化兩個棧:運算子棧s1和儲存中間結果的棧s2;

2、從左至右掃瞄中綴表示式;

3、遇到運算元時,將其壓s2;

4、遇到運算子時,比較其與s1棧頂運算子的優先順序:

1)、如果s1為空,或棧頂運算子為左括號「(」,則直接將此運算子入棧;

2)、否則,若優先順序比棧頂運算子的高,也將運算子壓入s1

3)、否則,將s1棧頂的運算子彈出並壓入到s2中,再次轉到(4-1)與s1中新的棧頂運算子相比較;

5、遇到括號時:

1)、如果是左括號「(」,則直接壓入s1;

2)、如果是右括號「)」,則依次彈出s1棧頂的運算子,並壓入s2,直到遇到左www.cppcns.com括號為止,此時將這一對括號丟棄;

6、重複步驟2至5,直到表示式的最右邊;

7、將s1中剩餘的運算子依次彈出並壓入s2;

8、依次彈出s2中的程式設計客棧元素並輸出,結果的逆序即為中綴表示式對應的字尾表示式

**:#include

#include

#include

#include

using namespace std;

stack s1; //運算子棧

stack s2; //中間結果棧

int f(const char str)

return yxj; }

int main()else if(c[i]=='+'||c[i]=='-'||c[i]=='*'||c[i]=='/')else if(f(www.cppcns.comc[i])>f(s1.top()))

else

} }elseelse

s1.pop();

} }} while(!s1.empty())

//while(!s2.empty()){ /www.cppcns.com/結果是逆序的

// cout<

本文標題: c++中綴表示式轉字尾表示式的方法

本文位址:

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

一 中綴表示轉字尾表示的規則 1.遇到操作符時,如果該操作符優先順序高於op stack棧頂的操作符,則直接壓入op stack,如果同級或低於棧頂操作符,則將棧中操作符依次彈出 同時壓入輸出棧 直到遇到比當前操作符優先順序低的,或者遇到了 2.和 都不能進入輸出棧。3.對於操作符 只有 才能將其彈...

中綴表示式轉字尾表示式

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棧可先放入優先順序最低的運算子 注意,中綴式應以此最低優先順序的運算子結束。可指定其他字元,不一定非 不可。從中綴式的左端開始取字元,逐...