#include#includeusing namespace std;templateclass stack
t top()
void pop()
bool isempty()
void push(t b)
private:
t a[100];int top;
}; void chpost(char inorder,char post,int& m)//將中綴表示式轉換為字尾表示式,引數m跟蹤字尾表示式長度
if(inorder[i]=='(')czf.push(inorder[i]);//若為『(』直接壓入堆疊
if(inorder[i]=='+')//若為『+』與棧頂比較優先順序,較低則將棧頂操作符加到陣列中,在將『+』壓棧
else
}if(inorder[i]=='-')//若為『-』與棧頂比較優先順序,較低則將棧頂操作符加到陣列中,將『-』壓棧
else
}if(inorder[i]=='*'||inorder[i]=='/')czf.push(inorder[i]);//若為『*』或『/』直接壓棧
if(inorder[i]==')')//若遇到『)』將棧中的操作符依次彈出直到遇到『(』結束
czf.pop();//彈出『(』}}
while(!czf.isempty())//將棧中剩餘元素依次彈出到字尾表示式陣列中
}int yusuan(char post,int n)//通過字尾表示式求值
if(post[i]=='-')
if(post[i]=='+')
if(post[i]=='*')
if(post[i]=='/')
} result=ss.top();//得到最後棧頂元素
ss.pop();//清空棧
return result;
}int main(void)
char po[100];int n=0;
chpost(in,po,n);
cout<<"字尾表示式為:";
for(int j=0;jcout
}
波蘭表示式 逆波蘭表示式
中綴表示式是最常見的運算表示式,如 3 5 2 6 1 波蘭表示式又稱為字首表示式,它是由中綴表示式經過一定的方式轉換來的 比如中綴表示式為 3 5x 2 6 1 對應的字首表示式為 3 x 5 2 6 1 對於中綴表示式從右向左遍歷轉換為字首表示式,中途要是用棧進行儲存 轉換規則如下 波蘭表示式 ...
波蘭逆波蘭表示式
實現乙個基本的計算器來計算簡單的表示式字串。表示式字串只包含非負整數,算符 左括號 和右括號 整數除法需要 向下截斷 你可以假定給定的表示式總是有效的。所有的中間結果的範圍為 231,231 1 class solution s2.push s.substr l,r l l r 碰見符號 else ...
波蘭表示式與逆波蘭表示式
2018年09月03日 11 29 15 jitwxs 閱讀數 70 標籤 波蘭 字首 更多 個人分類 演算法與資料結構 常見的算術表示式,稱為中綴表示式,例如 5 6 4 2 3波蘭表示式也稱為字首表示式,以上面的例子為例,其波蘭表示式為 5 6 4 2 3中綴表示式轉換字首表示式的操作過程為 1...