字尾表示式計算

2021-06-22 03:41:56 字數 635 閱讀 6078

演算法:

1.遍歷字尾表示式中的數字和符號

對於數字:進棧

對於符號:

• 從棧中彈出右運算元

• 從棧中彈出左運算元

• 根據符號進行運算

• 將運算結果壓入棧中

2. 遍歷結束:棧中的唯一數字為計算結果

**:

#include #include "linkstack.h"

int isnumber(char c)

int isoperator(char c)

int value(char c)

int express(int left, int right, char op)

return ret;

}int compute(const char* exp)

else if( isoperator(exp[i]) )

else

i++;

}if( (linkstack_size(stack) == 1) && (exp[i] == '\0') )

else

linkstack_destroy(stack);

return ret;

}int main()

字尾表示式計算

將中綴表示式轉換為字尾表示式 與轉換為字首表示式相似,遵循以下步驟 1 初始化兩個棧 運算子棧s1和儲存中間結果的棧s2 2 從左至右掃瞄中綴表示式 3 遇到運算元時,將其壓入s2 4 遇到運算子時,比較其與s1棧頂運算子的優先順序 4 1 如果s1為空,或棧頂運算子為左括號 則直接將此運算子入棧 ...

字尾表示式計算

字尾表示式這樣一種型別的表示式,運算元在前,操作符在後。例如這樣的一位數字尾表示式 32 5 4 對等的四則表示式為 3 2 5 4。試編寫程式,求解乙個一位數的字尾表示式計算,表示式支援 操作,其中 為整除。輸入 表示式輸出 計算值樣例輸入 32 5 4 樣例輸出 21提示 可使用棧 解題關鍵 1...

計算字尾表示式

一 通過棧把中綴表示式轉換為字尾表示式的步驟 從左至右掃瞄中綴表示式,if 遇到數字 else if 遇到 else if 遇到 else if 遇到運算子op elseelseelse if 遇到操作符op 1 型別標記 enum設定預設值10,20是為了區分 負號 使得相差較大,便於區別 sta...