表示式求值

2022-04-07 21:41:27 字數 704 閱讀 6273

數學表示式求值:輸入由數字、『+』,『—』,『*』,『/』,乘方』^』,小括號組成的字串,輸出運算結果;

使用棧實現。對於括號,預處理每個左括號對應的右括號位置,然後遞迴處理每個括號.對於判斷負數要很小心,萬一出現-(-(-(-1)))這種情況

#includeusing namespace std;

const int n=105;

char s[n];

int t[n],n;

unordered_mapmp;

void init()

}mp['+']=mp['-']=1;

mp['*']=mp['/']=2;

mp['^']=3;

}bool isd(char c)

void js(stack&a,stack&b)

double dfs(int l,int r)

tmp*=neg,neg=1;

s2.push(tmp);

} else if(s[i]=='(')

else

if(!s1.empty())

else s1.push(s[i]);

++i;}}

while(s1.size())js(s1,s2);

return s2.top();

}int main()

表示式求值

程式的說明見清華大學出版社 資料結構 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 ...