將中綴表示式轉化成字尾表示式

2021-10-25 18:10:58 字數 1217 閱讀 9043

中綴變字尾主要的思想就是將需要的運算子先做乙個對映

對於任意表示式,式中從頭開始掃,遇到非運算子,即任意數字或字母直接輸出

遇到運算子考慮放入棧中

若棧空則放入

若棧不為空,判斷棧頂的優先順序是否 < 待放入的運算子,若 小於則將其壓入棧中;

若不小於,則將棧一直 pop,知道運算子可以放入棧中

當然還有特殊的元素符, '('   ')'  這兩個元素比較特殊,『(』 元素符優先順序最大,自然放入棧中,但是要注意,只有遇到 ')' 時,『(』

才會彈出,所以在棧中有 '(' 時,需要特判,當然 '('  ')' 這兩個運算子是不需要輸出的

下面給出應用 stl 中的程式和自己寫的棧鏈的程式,主函式是相似的,只是在不重要的地方改了一下

#include #include #include using namespace std;

int n,m,t;

int i,j,k;

//int a[n];

mapmp;

int main()

if(s.empty() || mp[str[i]]>mp[s.top()])

else cout<#include #define null null

using namespace std;

int n,m,t;

int i,j,k;

//int a[n];

mapmp;

struct node

;class stack

void push(char x)

void pop()

char top()

bool empty()

int size()

};int main()

if(s.empty() || mp[str[i]]>mp[s.top()])

else cout<}}}

}}

while(s.size()) cout

return 0;

}

將中綴表示式轉化成字尾表示式(逆波蘭式)

直接上 中綴表示式 轉換成 字尾表示式 逆波蘭式 include include struct stack int get priority char c int isempty struct stack s struct stack createstack unsigned int len voi...

將中綴表示式轉化成字尾表示式來計算值

題目很簡單,就是給出乙個表示式 例如2 3 5 6 然後我們得出他的值。未接觸這個方法前,我是用了一種很複雜的方法 爆肝警告 將中綴表示式 就是我們要求的表示式 轉化成字尾表示式來解決就會比較簡單。對於中綴表示式和字尾表示式的概念這裡就不說了,只將方法呈現出來。例如乙個中綴表示式 a b c d e...

一文看懂中綴表示式轉化成字尾表示式

通過堆疊的學習,我們已經知道想要將中綴表示式轉化成字尾表示式,有以下幾步操作 1.對於運算數 直接輸出 2.對於左括號 直接壓入棧中 3.對於右括號 將棧頂的運算子彈出並輸出,若棧頂元素不是左括號,繼續彈出,直到遇到左括號 出棧,但是不輸出 4.對於運算子 若優先順序大於棧頂運算子時,則把他壓棧 若...