首先宣告我們的表示式(expression)只是簡單的四則運算,再加上小括號.
運算元operand,操作符operator
如果直接給出字尾表示式(postfix,也叫逆波蘭式)是最容易計算的,這種表示式中已經不含括號.方法:遇到運算元時壓入棧中;遇到操作符時從棧中彈出兩個元素進行此運算,再將運算結果壓入棧中.**如下:
#include#include#include#include#includeusing namespace std;int main();
stacks;
string opt="+-*/";
size_t len=sizeof(postfix)/sizeof(string);
for(int i=0;i
但通常我們看到的形式都是中綴表示式,形如:a+b*c-(d*e+f)/g
我們可以先把中綴表示式轉換成字尾表示式再進行運算
#include#include#include#includeusing namespace std;
bool not_prio_than(string opt1,string opt2);
int main(); //a+b*c-(d*e+f)/g
//所有運算子
string opt="+-*/()";
//輸出佇列
queueoutput;
//計算過程中用到的棧
stackst;
size_t len=sizeof(infix)/sizeof(string);
for(int i=0;i=b?true:false;
}
用棧計算表示式
首先宣告我們的表示式 expression 只是簡單的四則運算,再加上小括號.運算元operand,操作符operator 如果直接給出字尾表示式 postfix,也叫逆波蘭式 是最容易計算的,這種表示式中已經不含括號.方法 遇到運算元時壓入棧中 遇到操作符時從棧中彈出兩個元素進行此運算,再將運算結...
C 用棧計算表示式
基本思路 1 設定兩個棧,乙個運算子棧,乙個運算元棧。初始化後將 壓入操作符棧中。2 順序掃瞄 當輸入為運算元時就將其壓入運算元棧。當輸入為運算子時,則比較輸入運算子和運算子棧的棧頂運算子的優先順序的大小。若輸入運算子的優先順序高於運算子棧頂運算子的優先順序時,則將其壓入到運算子棧 若運算子棧頂運算...
用棧實現表示式計算
public class calculator public static inthandle string express else else else else int num integer.parseint keepnum keepnum numstack.push num index if...