/*執行結果:後序式的運算
說明:將中序式轉換為後序式的好處是,不用處理運運算元先後順序問題,只要依序由表示式由前往後讀取即可。
解法:運算時由後序式的前方開始讀取,遇到運算元先存入堆疊,如果遇到運運算元,則由堆疊中取出兩個運算元進行對應的運算,然後將
結果存回堆疊,如果表示式讀取完畢,那麼堆疊頂的值就是答案了,例如我們計算12+34+* 這個表示式
(也就 是(1+2)*(3+4) ):
讀取 堆疊
1 1
2 12
+ 3
3 33 (1+2後存回)
4 334
+ 37 (3+4後存回)
* 21 (3*7後存回)
*/#include
#include
void evalpf(char*);
double cal(double, char, double
);int main(void
)void evalpf(char*postfix)
;
char temp[2
];
char
token;
int top = 0, i = 0
;
temp[
1] = '\0'
;
while(1
)
break
; }
i++;
}}double cal(double p1, char op, double
p2)}
中序式變成後序式的分析
利用棧進行操作 1.將算式根據運算優先順序次序完全括起來 左右括號的運算優先順序比運算子低。2.從左到右依次掃瞄算數表示式,令讀入的符號為 若 是操作式,則將 輸出到前序式字串中,若 是運算子,則分為以下三種情況要討論 1 左括號,入棧 2 右括號,彈出棧頂運算子,若不是左括號,則將取出的運算子輸出...
多項式運算
多項式運算 順序棧實現 在demo1.cpp基礎上增加 彌補異常處理 以及多位數運算缺點 include include include define ok 1 define error 2 define overflow 1 define ini size 100 typedef int elem...
多項式的冪運算
在寫 過程中發現字元陣列轉字串用.tostring 方法會亂碼,可以用string.valueof argsp 或者用array.tostring args 冪的運算時由於用的是string會出現空間浪費現象,可以用stringbuffer類替換,但是由於計算量不大,所以就沒有改了 package ...