表示式求值 stl容器 棧和佇列的應用

2021-10-19 05:31:51 字數 869 閱讀 7109

#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 若當前運算子優先順序等於棧頂優先順序 括號的情況 則...