#include
#include
#include
#include
#include
#include
#include
using
namespace std;
struct node
;stack t;
//棧:用於轉字尾時的符號棧和計算值時的數字棧
queue q;
//記錄字尾表示式
map<
char
,int
> m;
//用於指示操作符的優先順序
node node;
intmain()
q.push
(node);}
else
else
if(str[j]
==')'
) t.
pop();
}else
t.push
(node);}
j++;}
}while
(!t.
empty()
)//此時的q已經存好了字尾表示式
while
(!q.
empty()
)else
if(q.
front()
.flag ==1)
} cout
).num<}return0;
}
可用此段**檢視字尾表示式:
while
(!q.
empty()
)
利用棧和佇列進行表示式求值
深入了解棧和佇列的特性,學會在實際問題下靈活運用它們。表示式求值運算是實現程式語言的基本問題之一,也是棧應用的乙個典型例子。設計並演示用算符優先順序對算術表示式的求解過程。1 演算法優先級別如下 2 以字串行的形式從終端輸入語法正確 不含變數的算術表示式,利用給出的算符優先順序關係,實現對算術四則混...
表示式求值(棧)
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 acm隊的mdd想做乙個計算器,但是,他要做的不僅僅是一計算乙個a b的計算器,他想實現隨便輸入乙個表示式都能求出它的值的計算器,現在請你幫助他來實現這個計算器吧。比如輸入 1 2 4 程式就輸出1.50 結果保留兩位小數 輸入...
棧 表示式求值
核心演算法思想 1.運用兩個棧,乙個存運算子,乙個存數值 2.以 做為標誌位,開頭或者結尾 3.檢查當前字元,若當前字元為數值,則加入數值棧,若為運算子,則檢驗當前運算子的優先順序,1 若當前運算子優先順序大於棧頂優先順序,則把該運算子壓入棧 2 若當前運算子優先順序等於棧頂優先順序 括號的情況 則...