中綴表示式求值

2021-09-29 12:00:54 字數 628 閱讀 3716

中綴表示式求值的運算方法為

當遇到數值直接壓入數值棧

當遇到運算子時比較運算子棧棧頂運算子的優先順序,如果大於等於當前運算子優先順序,則彈出兩個數值進行運算,併入棧

當遇到(時直接入棧

當遇到)時計算直到(

**用到了一點小技巧,首先在運算子棧裡面存放了乙個優先順序最低的字元(『q』),因此當第乙個運算子比較優先順序時一定大於棧頂優先順序,故此實現第乙個入棧的運算子不會進行運算(這種方法解決了每次都判斷是否為第乙個運算子的問題),並且在表示式最後加入了乙個第二低優先順序的符號(『p』),相當於數學裡面的等號,起到開始運算直到遇到『q』。

#include using namespace std;

#define ll long long

mapprio;//存放運算子優先順序

stackoper;//定義運算子棧

stacknum;//定義數值棧

void init()

int cal(int d,int e,char c) }

int main()

num.push(k);

i=j-1;

}

} cout

}```

中綴表示式求值

中綴表示式用於計算乙個表示式,比如計算器 就是這樣實現的 這兒是用棧的資料結構來實現的。首先輸入乙個字串,表示乙個表示式,然後用乙個棧儲存數字,另外乙個棧儲存符號 如果當前運算子優先順序比棧頂元素優先順序高,則入棧,若當前運算子優先順序小於等於棧頂運算子優先順序,則從數字棧中彈出兩個元素,從符號棧中...

中綴表示式求值

表示式求值都需要2個棧。乙個是符號棧,另乙個是數字棧。拿上面的字尾式45 來說,咱們剛才將表示式從4 5轉換到45 的過程是咱們一眼就能看出來的,但是計算機不能像咱們這樣做,因為他不會。他只會從表示式的開頭,順序掃瞄表示式的每乙個字元,它不能像咱們一樣 一眼就 看 出來。計算機是如何轉換的呢?1.從...

中綴表示式求值

計算 calc.cpp 問題描述 小明在你的幫助下,破密了ferrari設的密碼門,正要往前走,突然又出現了乙個密碼門,門上有乙個算式,其中只有 0 9 求出的值就是密碼。小明數學學得不好,還需你幫他的忙。用整數除法 輸入 輸入檔案calc.in共1行,為乙個算式。輸出 輸出檔案calc.out共1...