#include#include#include#include#includeusing namespace std;
void infix2postfix(const string &infix,string & postfix);
bool isparenleft(char ch);
bool isparenright(char ch);
bool isoperand(char ch);
bool isoperator(char ch);
bool priority(char ch1,char ch2);
typedef pairpair;
mapopemap;
int table[4][4]=,,,};
int main()
bool isparenleft(char ch)
bool isparenright(char ch)
'||ch==')');
}bool isoperand(char ch)
bool isoperator(char ch)
void infix2postfix(const string &infix,string & postfix)
{ int size=infix.size();
char ch;
stacks;
for(int i=0;i演算法詳解:
1、在遇到運算元時,將其追加到輸出字串postfix中,在字尾表示式中,運算元的順序與其在中綴表示式中的順序相同,中綴表示式中操作符左邊的運算元也出現在字尾表示式中的操作符的左邊。
2、使各個左括號符入棧。
3、在遇到操作符時,若棧為空,則使操作符入棧。若棧非空,則使優先順序更高(或相同)的操作符出棧,並追加到postfix中,在遇到左括號符,或優先順序更低的操作符,或棧為空時停止。然後使新操作符入棧,這樣,該步驟按優先順序和從左到右的順序給操作符排序。注意,使操作符持續出棧,直到
棧的應用之中綴轉字尾
include stdio.h include stdlib.h include string.h include linkstack.h int isnumber char c int isoperator char c int isleft char c int isright char c c...
棧的基礎應用之中綴轉換字尾
演算法詳解 1 在遇到運算元時,將其追加到輸出字串postfix中,在字尾表示式中,運算元的順序與其在中綴表示式中的順序相同,中綴表示式中操作符左邊的運算元也出現在字尾表示式中的操作符的左邊。2 使各個左括號符入棧。3 在遇到操作符時,若棧為空,則使操作符入棧。若棧非空,則使優先順序更高 或相同 的...
棧的應用之中綴表示式轉字尾表示式
由於中綴表示式有括號的存在,其運算次序比較複雜,直接分析有些難度。先考慮不帶括號的中綴表示式的轉換。由於運算符號具有不同的優先順序,當前的運算子不能直接放在運算元的後面,需要考慮下乙個運算子的優先順序。對比三個不同的中綴表示式轉換為字尾表示式的結果 可以發現 1.字尾表示式數字的出現順序和中綴表示式...