中綴表示式是最常見的運算表示式,如:3 + 5 * (2 + 6) - 1
波蘭表示式又稱為字首表示式,它是由中綴表示式經過一定的方式轉換來的
比如中綴表示式為:3+5x(2+6)-1 對應的字首表示式為:- + 3 x 5 + 2 6 1
對於中綴表示式從右向左遍歷轉換為字首表示式,中途要是用棧進行儲存
轉換規則如下:
波蘭表示式**:
前提規定:假設表示式中只存在如下符號:左括號、右括號、加、減、乘、除
#include
#include
#include
#include
using namespace std;
stack<
char
> sta;
char ch[50]
,res[50]
;int ind;
intmain()
if(ch[i]
=='+'
|| ch[i]
=='-'
) sta.
push
(ch[i]);
continue;}
if(ch[i]
=='*'
|| ch[i]
=='/')if
(ch[i]
==')')if
(ch[i]
=='(')if
(!sta.
empty()
) sta.
pop();
}}while
(!sta.
empty()
)for
(int i=ind-
1;i>=0;
--i)
printf
("%c"
,res[i]);
return0;
}
逆波蘭表示式又稱為字尾表示式,由中綴表示式按照一定的方式轉換而來的
比如中綴表示式為:3+5x(2+6)-1 對應的字尾表示式為:3526+x1-+
此轉換同樣需要棧來儲存操作符,轉換規則如下:
逆波蘭表示式**:
#include
#include
#include
#include
using namespace std;
stack<
char
> sta;
char sour[
100]
,res[
100]
;int ind;
intmain()
if(sour[i]
>=
'0'&&sour[i]
<=
'9')
if(sour[i]
=='+'
||sour[i]
=='-'
) sta.
push
(sour[i]);
continue;}
if(sour[i]
==')'
) sta.
pop();
continue;}
if(sour[i]
=='*'
||sour[i]
=='/'
) sta.
push
(sour[i]);
}while
(!sta.
empty()
)for
(int i=
0;i++i)
printf
("%c"
,res[i]);
return0;
}
波蘭逆波蘭表示式
實現乙個基本的計算器來計算簡單的表示式字串。表示式字串只包含非負整數,算符 左括號 和右括號 整數除法需要 向下截斷 你可以假定給定的表示式總是有效的。所有的中間結果的範圍為 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...
波蘭表示式和逆波蘭表示式
題目 根據逆波蘭表示法,求表示式的值。有效的運算子包括 每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。說明 示例 1 輸入 2 1 3 輸出 9 解釋 該算式轉化為常見的中綴算術表示式為 2 1 3 9 示例 2 輸入 4 13 5 輸出 6 解釋 該算式轉化為常見的中綴算術表示式為 4 13...