處理表示式主要是對優先順序以及括號的判斷
1.運算子棧頂的優先順序小於加入的時,需要將所有的不評級的取出並計算,
2.當遇到)時,需要括號內的運算全部處理
2.其他情況全部加入運算子棧和資料棧
**:
#include
#include
#include
using
namespace std;
typedef
long
long
int ll;
const
int maxn =10;
stack<
char
> ss;
//運算子棧
stack<
double
>st;
//資料棧
char s[30]
;int
main()
else}}
else
if(s[i]
=='+'
|| s[i]
=='-'
)else
} ss.
push
(s[i]);
}else
if(s[i]
=='/'
|| s[i]
=='*'
||s[i]
=='('
)else
i--; st.
push
(sum);}
}/*printf_s("%d %d\n", ss.size(), st.size());
while (ss.size())
*/while
(!ss.
empty()
)}double su;
su = st.
top();
printf_s
("%.2lf"
, su)
;//(56-20)/(1+5)
}
中綴表示式轉字尾表示式 求字尾表示式值
中綴表示式轉字尾表示式 佇列q和棧s q存放字尾表示式結果 s存放操作符 設棧頂元素top 當前讀取元素a 演算法如果s是空棧 a入棧非空棧 a不是操作符,a插入佇列q 如果a為 a入棧 否則,如果a為 把棧內操作符出棧依次插入佇列q,直至遇到得 元素出棧為止 否則,如果a優先順序大於top,a入棧...
字尾表示式 棧
若干行,每行對應乙個中綴表示式 若干行,每行對應乙個由中綴表示式轉換而來的字尾表示式 x a y b z f a b c d m n s t y a b c d e f gxayb zf abc dm n st y abc def g 解題思路 首先如何實現中綴表示式轉換成字尾表示式,方法如下 1....
棧 字尾表示式
看了老師給的部落格,學習了一下,我學的確實很菜啊,仿照寫了乙個可以實現任意數字個數的加括號運算,目前只支援加乙個括號。收穫真的挺大 def to rpn f4 defcompare x,y v return 1 if y else v x v y rpn,operators for i in f4 ...