天天看點

廣工 資料結構 表達式類型求值(下)

設計和調試分析

1.      在建立二叉樹時,要遵循一個原則,那就是運算符做為分支結點,操作數做為葉子結點,利用棧進行操作。當遇到操作數是,無論是變量還是實數或整數,都将入棧。當遇到運算符号時,把棧頂的兩個元素彈出來進行運算,然後再把運算結果放入棧中。如果你輸入的是正确的字尾表達式,那麼,最終要建立的那棵樹就是棧中唯一的一個元素。與此同時,也可以用這個結果來作為判斷使用者輸入的表達式是否為正确的字尾表達式,當最後的棧中出現多于一棵二叉樹時,說明此表達式不是正确的字尾表達式。

2.      二叉樹的結點類型分為四類,INT為整型,DOU為實型,CHAR為字元型 ,OPER為操作符,其含義見名知意,為實際情況所需要。

3.      此系統運用到C标準函數庫裡的其他函數,比如将字元串轉化為浮點數   atof(a) 出自 #include,等等。

4.      以樹的結構列印二叉樹的資訊。

       思想:确定每個樹的(x,y)坐标,x坐标是節點中序周遊的順序,y坐标是  節點的高度,但目前此方法行不通,因為問題很複雜,其中一個原因是結點       的類型不是單一的,有實型,有整型,有字元型。這裡運用的方法是層次遍    曆二叉樹,把周遊結果放在另外一個隊列中,然後再利用此隊列進行列印。

       但隻列印深度為4以下的樹,此方法有待提升。

5.  計算表達式的結果時,後序周遊,利用棧對表達式進行運算,最後結果以結點       的形式存放在棧中,再在main 中把其取出列印。其思想是,後序周遊,遇       操作符,則進行運算,運算結果作為一個新結點入棧(結果統一為double)

一、  使用者手冊

1.      本程式的運作環境為基于Win 7作業系統下的VC++6.0,可執行檔案為:Expression.exe;

2.      使用者輕按兩下即可啟動程式;

3.      進行示範程式,顯示如下主菜單界面:

4.      現在輸入一個錯誤的字尾表達式示範。(其他情況使用者自行操作)請使用者認真閱讀出現的友好提示。

5.      現在輸入一個正确的字尾表達式來進行示範。

6.      現在對變量進行指派,并計算

7.      其他功能與BUG請使用者大膽進行測試,最壞的情況隻不過是程式不能運作,并沒有什麼大的危害。

二、  測試結果

【測試資料】 

    1)分别輸入0;a; -91; 2  4  +  33  *   -8   -; 1.5  a  uuu  /  *;

        2  11  +  3  ^ 并輸出。

    2)每當輸入一個表達式後,對其中的變量指派,然後對表達式求值。 

    3)還有很多測試的資料,詳細請讀者自行測試。

1.  輸入0

2.  輸入 a

3.  輸入-91

4.  輸入-5  8  +

5.  輸入2  4  +  33  *   -8   -

6.  輸入1.5  a  uuu  /  *

7.  輸入 2  11  +  3  ^

8.  輸入a1   3h   *   (字母開頭的變量取最後一個字元,若最後一個字元為數字,即當成數字使用。數字開頭的變量取字母前面的數字,當成數字使用)

轉載于:https://www.cnblogs.com/beyondckw/p/3879197.html

繼續閱讀