雖然演算法原理很簡單,但是有幾個地方需要注意。
1.因為左括號是要放入操作符棧中的,所以他的優先順序要設定為0,不然其他運算子來了,就不知道能不能放進去。
2.棧頂運算子優先順序小於op時,才能放入操作符棧。
#include using namespace std;
struct node ;
string str;
stacks;
queueq;
mapop;
void change() else
s.pop();
continue;
} else if(c!='(')
}temp.flag=false;
temp.op=c;
s.push(temp);
} }while(!s.empty())//從操作符棧變成了空棧
}double cal()
}return s.top().num;
}int main(int argc, char **ar**)
演算法 表示式求值
今天在網上看到dijkstra的雙棧算術表示式求值演算法,以前很早的時候知道通過算術棧和數值棧搞定的,這次用oc通過陣列實現了預期的效果.原理參考網上,原作者不詳 程式語言系統一般都內建了對算術表示式的處理,我們可以簡易的模仿一下算術表示式處理機制,思想不變,主要是實現方式略有不同。算術表示式可能是...
帶括號的表示式計算
時間限制 1 s 記憶體限制 256 mb 測試點數 5 題目描述 小明在你的幫助下,破密了ferrari設的密碼門,正要往前走,突然又出現了乙個密碼門,門上有乙個算式,其中只有 0 9 求出的值就是密碼。小明數學學得不好,還需你幫他的忙。用整數除法 輸入格式 共1行,為乙個算式。輸出格式 共1行,...
資料結構實驗 中綴表示式求值 可帶括號
輸入乙個含括號的加減乘除表示式,輸出該表示式的值 思路 輸入表示式,注意 可能帶有括號 運用兩個棧,符號棧和數字棧,首先判斷優先順序,把所有符號的優先順序打表,進行運算,入棧時模仿單調棧,如果當前 優先順序比棧頂元素優先順序小,說明當前元素需要趕快計算,不然會影響以後的結果。例如2 3 2,進來的時...