前陣子剛實現GDI+函數繪制函數曲線的功能,閑下來沒事實在無聊就試著做下有關正則表達式的自動機,想著做完的時候正好可以嵌入繪圖窗口,實現用戶輸入函數表達式同步生成對應曲線圖,不覺一陣狂喜...
本來滔哥讓我用樹實現,主要思想是將樹的中序改為后序,想來忒麻煩了點,而且本人之前在數據結構方面的造詣實在不高,慚愧慚愧...只好放棄之,猶豫半天后終于打定用中綴表達式轉為后綴表達式的方式做,實現過程還需要用到壓棧與彈棧對數據進行處理,發現堆棧對后綴表達式進行計算還是相當滴舒服的~
逆波蘭表達式 rpn(Reverse Polish Notation)
a+b ---> a,b,+
a+(b-c) ---> a,b,c,-,+
a+(b-c)*d ---> a,d,b,c,-,*,+
本來打算干脆用STL的<stack>模板進行棧的操作,想著會省事多,后來調試的時候TMD的出現內存泄漏,在stack的push操作時指針出現問題,調了大半天也沒搞定...一怒之下干脆自己用<vector>寫了個“stack1.h“的頭文件實現了棧的基本操作,感覺<vector>模板的強大...
目前該簡陋自動機只實現+,-,*,/,^的相關運算,并支持整數與小數的操作:

測試解決未知的bug中...