前陣子剛實現(xiàn)GDI+函數(shù)繪制函數(shù)曲線的功能,閑下來沒事實在無聊就試著做下有關(guān)正則表達(dá)式的自動機(jī),想著做完的時候正好可以嵌入繪圖窗口,實現(xiàn)用戶輸入函數(shù)表達(dá)式同步生成對應(yīng)曲線圖,不覺一陣狂喜...
本來滔哥讓我用樹實現(xiàn),主要思想是將樹的中序改為后序,想來忒麻煩了點,而且本人之前在數(shù)據(jù)結(jié)構(gòu)方面的造詣實在不高,慚愧慚愧...只好放棄之,猶豫半天后終于打定用中綴表達(dá)式轉(zhuǎn)為后綴表達(dá)式的方式做,實現(xiàn)過程還需要用到壓棧與彈棧對數(shù)據(jù)進(jìn)行處理,發(fā)現(xiàn)堆棧對后綴表達(dá)式進(jìn)行計算還是相當(dāng)?shù)问娣摹?img border=0 alt="" src="http://www.shnenglu.com/images/cppblog_com/scut-chenzb/9.gif" width=19 height=19>
逆波蘭表達(dá)式 rpn(Reverse Polish Notation)
a+b ---> a,b,+
a+(b-c) ---> a,b,c,-,+
a+(b-c)*d ---> a,d,b,c,-,*,+
本來打算干脆用STL的<stack>模板進(jìn)行棧的操作,想著會省事多,后來調(diào)試的時候TMD的出現(xiàn)內(nèi)存泄漏,在stack的push操作時指針出現(xiàn)問題,調(diào)了大半天也沒搞定...一怒之下干脆自己用<vector>寫了個“stack1.h“的頭文件實現(xiàn)了棧的基本操作,感覺<vector>模板的強(qiáng)大...
目前該簡陋自動機(jī)只實現(xiàn)+,-,*,/,^的相關(guān)運算,并支持整數(shù)與小數(shù)的操作:

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