這段**對一些讀入的非法資料判斷存在錯誤
比如像出現 a++b 就無法判斷了
另外需要注意的是我覺得棧裡面儲存的是char型的,但是在運算元值的時候,會很不方便
還有一點在主函式裡面如果想用while來多次讀入資料的話,那麼你要考慮上一次輸入資料失敗後,那後面的字元該怎麼操作
上面出現的問題大家可以嘗試著去解決
以下是根據書上的**簡單敲出來的
bool in(char c)
char precede(char t1,char t2)
} if(t2 == '*'||t2 == '/')
if(t2 == '(')
if(t1 ==')')
else
f = '<';
if(t2 == ')') }
if(t2 == '#')
if(t1 == '#') f = '=';
} return f;
}char operate(char a,char c,char b)
//提前結束
if(!in(ch))
else
}} if(flag == 1)
cout<
資料結構 棧實現表示式求值
expression.h calc expression 功能 利用棧實現整數表示式求值 輸入 表示式字串 輸出 求值結果 日期 2018 04 05 ifndef expression h define expression h include include include include 將中...
棧實現表示式計算 資料結構
思路 所包含的運算子有 1 建立兩個棧,乙個用來儲存運算元,另乙個用來儲存運算子,開始時在運算子棧中先壓入 0 乙個表示式的結束符。2 然後從左至右依次讀取表示式中的各個符號 運算元或者運算子 3 如果讀到的是運算元直接存入運算元棧 4 如果讀到的是運算子,則作進一步判斷 若讀到的是 0 結束符,而...
資料結構實驗2 表示式求值(「棧」實現)
include include include include define stack init size 100 define increament 100 define zuidaweishu 10 define error 0 using namespace std class yunsua...