堆疊的應用 中綴表示式求值

2021-08-05 19:55:10 字數 397 閱讀 2153

分析:應先將中綴表示式轉換為字尾表示式

中綴轉字尾的步驟:

1. 首先依次按順序考慮字尾表示式中的各個運算數和運算符號,所有未處理的符號稱為等待中的符號;

2. 碰到運算數時直接輸出;

3. 碰到運算符號時,現將運算符號入棧,比較當前棧頂的符號和等待中的下乙個符號的優先順序;

4. 將當前符號與棧頂符號比較優先順序,若棧頂符號的優先順序較高,則符號出棧,直到棧頂元素優先順序小於等待符號為止;

5. 若等待元素優先順序較高,則等待符號進棧;

6. 考慮下乙個等待的符號,重複第5、6步的操作;

7. 當遇到右括號時,進行連續的出棧輸出,直到遇到左括號為止(右括號不入棧,左括號彈出堆疊但不輸出);

(未完待續。。。)

堆疊的其他應用:

中綴表示式求值

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

中綴表示式求值

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

中綴表示式求值

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