利用棧對表示式求值

2021-09-29 07:04:29 字數 871 閱讀 9903

輸入中綴表示式空格分隔 例如 2   3

展示如下:

順序從右向左,無優先順序順序,圖中順序 4*5=20, 20 4=24,結果為24

考慮優先順序的運算表示式求值

以上為不考慮優先順序的表示式求值方法,那麼接下來考慮優先順序時,將考慮:

換成程式設計思路:

執行表示式運算時,總是將結果壓入numstack棧

1. 遇到 「 」、「-」 操作符時,優先順序最低,先計算棧內已存資料的加減乘除操作

2. 遇到 「*」 、「/」 操作符時,計算棧內已存資料的乘除操作

3. 遇到 「(」 直接入operatorstack

4. 遇到 「)」 運算棧內的資料,直到找到 「(」

**如下:

function operatorfun(numstack, operatorstack)

}

function fun() {

var str = document.getelementbyid("input").value;

strline = str.split(" ");

for(var i = 0; i

例如:計算 3 * 3 - ( 12 3 * 2 ) / 3

歡迎補充。

表示式求值 棧的利用

棧的功能 棧的順序儲存 include include define maxsize 100 typedef char elemtype typedef struct sqstack sqstack void init s sqstack s 檢測完畢 void out s sqstack s pr...

8569 利用棧實現表示式求值

include using namespace std typedef struct nnode nsnode,nslink typedef struct cnode csnode,cslink typedef struct nstacklink nstack typedef struct csta...

表示式求值(棧)

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 acm隊的mdd想做乙個計算器,但是,他要做的不僅僅是一計算乙個a b的計算器,他想實現隨便輸入乙個表示式都能求出它的值的計算器,現在請你幫助他來實現這個計算器吧。比如輸入 1 2 4 程式就輸出1.50 結果保留兩位小數 輸入...