表示式求值

2021-06-26 17:21:21 字數 719 閱讀 7549

思路:參考嚴蔚敏的資料結構書籍

兩個棧:運算元棧opnd,操作符號棧optr

在表示式後加=

符號棧初始化時=入棧

每讀乙個字元:

當它是#並且符號棧棧頂也是#時結束演算法

當它是運算元時,進數棧

當它是符號時:

1.如果符號棧頂的優先順序小於它,進符號棧

2.如果符號棧頂的優先順序大於它,出兩個數,出乙個符號,計算後入數棧

3.如果與符號棧頂優先順序相等,那說明是棧頂為(,它是),(出棧

首先對書上**進行改進,嚴書的**只能計算結果和輸入在10以內的數字,我們要對111等乙個字元以上的數字進行處理

#include #include #include #include #include #include using namespace std;

mapmp;

char precdede[7] =

,//請參照嚴書上面的優先關係,,

,,

,};stackop;

stackdigit;

int oper(int a, int b, char ch)

return 0;

}int main()

int m = 0;

for(int k = i; k < j; k++)

digit.push(m);

i = j;

}else}}

cout<

表示式求值

程式的說明見清華大學出版社 資料結構 c語言版 include include define stack init size 40 define stackincrement 20 define ok 1 define false 0 typedef structs stack typedef st...

表示式求值

既然是表示式求值,自然需要在記憶體中儲存計算結果以及中間值。在 用c語言寫直譯器 一 中提過 變數要求是若型別,而 c 語言中的 view plaincopy to clipboardprint?in basic io.h define memery size 26 typedef enum var...

表示式求值

寫了乙個下午,各種糾結,各種問,終於搞明白了。但是自己還是想出來的一點東西的。很爽歪歪的,哈哈。先貼第一次的 include include include include include includeusing namespace std char data 7 7 int sign char ...