(完整word版)樹和二叉樹——數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告.doc
《(完整word版)樹和二叉樹——數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《(完整word版)樹和二叉樹——數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告.doc(22頁珍藏版)》請?jiān)趨R文網(wǎng)上搜索。
1、實(shí)習(xí)報(bào)告題目:編寫一個(gè)實(shí)現(xiàn)基于二叉樹表示的算術(shù)表達(dá)式Expression操作程序班級(jí): 姓名: 學(xué)號(hào): 完成日期/一、 需求分析算術(shù)表達(dá)式Expression內(nèi)可以含有變量(az)、常量(09)和二元算術(shù)符(+,-,*,/,(乘冪)。實(shí)現(xiàn)以下操作: (1)ReadExpr(E)以字符序列的形式輸入語法正確的前綴表達(dá)式并構(gòu)造表達(dá)式E。 (2)WriteExpr(E)用帶括號(hào)的中綴表達(dá)式輸出表達(dá)式E。 (3)Assign(V,c)實(shí)現(xiàn)對變量V的賦值(V=c),變量的初值為0。 (4)Value(E)對算術(shù)表達(dá)式E求值。 (5)CompoundExpr(p,E1,E2)構(gòu)造一個(gè)新的復(fù)合表達(dá)式(E1)
2、p(E2)。二、 概要設(shè)計(jì)1、數(shù)據(jù)類型的聲明:在這個(gè)課程設(shè)計(jì)中,采用了鏈表二叉樹的存儲(chǔ)結(jié)構(gòu),以及兩個(gè)順序棧的輔助存儲(chǔ)結(jié)構(gòu)/*頭文件以及存儲(chǔ)結(jié)構(gòu)*/#include#include#include#include#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW 0typedef int Status;2、表達(dá)式的抽象數(shù)據(jù)類型定義ADT Expression數(shù)據(jù)對象D:D是具有數(shù)值的常量C和沒有數(shù)值的變量V;數(shù)據(jù)關(guān)系:R=|V,CD, 表示由運(yùn)算符P結(jié)合起來的表達(dá)式E基本操作:Status Input_
3、Expr(&string,flag)操作結(jié)果:以字符序列的形式輸入語法正確的前綴表達(dá)式,保存到字符串string; 參數(shù)flag表示輸出的提示信息是什么,輸入成功返回OK,否則,返回ERROR。void judge_value(&E,&string,i)初始條件:樹E存在,表達(dá)式的前綴字符串string存在;操作結(jié)果:判斷字符stringi,如果是0-9常量之間,二叉樹結(jié)點(diǎn)E存為整型;否則,存為字符型。Status ReadExpr(&E,&exprstring)初始條件:表達(dá)式的前綴形式字符串exprstring存在;操作結(jié)果:以正確的前綴表示式exprstring并構(gòu)造表達(dá)式E,構(gòu)造成功,
4、返回OK,否則返回ERROR。Status Pri_Compare(c1,c2)初始條件:c1和c2是字符;操作結(jié)果:如果兩個(gè)字符是運(yùn)算符,比較兩個(gè)運(yùn)算符的優(yōu)先級(jí),c1比c2優(yōu)先,返回OK,否則返回ERROR。void WriteExpr(&E)初始條件:表達(dá)式E存在;操作條件:用帶括弧的中綴表達(dá)式輸入表達(dá)式E。void Assign(&E,V,c,&flag)初始條件:表達(dá)式E存在,flag為標(biāo)志是否有賦值過;操作結(jié)果:實(shí)現(xiàn)對表達(dá)式E中的所有變量V的賦值(V=c)。long Operate(opr1,opr,opr2)初始條件:操作數(shù)opr1和操作數(shù)opr2以及操作運(yùn)算符opr;操作結(jié)果:運(yùn)
5、算符運(yùn)算求值,參數(shù)opr1,opr2為常量,opr為運(yùn)算符,根據(jù)不同的運(yùn)算符,實(shí)現(xiàn)不同的運(yùn)算,返回運(yùn)算結(jié)果。Status Check(E)初始條件:表達(dá)式E存在;操作結(jié)果:檢查表達(dá)式E是否還存在沒有賦值的變量,以便求算數(shù)表達(dá)式E的值。long Value(E)初始條件:表達(dá)式E存在;操作結(jié)果:對算術(shù)表達(dá)式求值,返回求到的結(jié)果。void CompoundExpr(P,&E1,E2)初始條件:表達(dá)式E1和E2存在;操作條件:構(gòu)造一個(gè)新的復(fù)合表達(dá)式(E1)P(E2)。Status Read_Inorder_Expr(&string,&pre_expr)操作結(jié)果:以表達(dá)式的原書寫形式輸入,表達(dá)式的原書
6、寫形式字符串string變?yōu)樽址畃re_expr,后調(diào)用reversal_string()函數(shù)反轉(zhuǎn)得到前綴表達(dá)式pre_expr。得到正確的前綴表達(dá)式返回OK,否則,返回ERROR。void MergeConst(&E)操作結(jié)果:常數(shù)合并操作,合并表達(dá)式E中所有常數(shù)運(yùn)算。ADT Expression3、整體設(shè)計(jì)1、順序棧的基本操作:對于棧SqStack:Status InitStack(SqStack *S)/* 構(gòu)造一個(gè)空棧S */Status StackEmpty(SqStack S)/* 若棧S為空棧,則返回TRUE,否則返回FALSE */Status Push(SqStack *S
7、,SElemType e)/* 插入元素e為新的棧頂元素 */Status Pop(SqStack *S,SElemType *e) /* 若棧不空,則刪除S的棧頂元素,用e返回其值,并返回OK;否則返回ERROR */Status GetTop(SqStack S,SElemType *e) /* 若棧不空,則用e返回S的棧頂元素,并返回OK;否則返回ERROR */對于棧SqStack1:Status InitStack1(SqStack1 *S)/* 構(gòu)造一個(gè)空棧S */Status StackEmpty1(SqStack1 S)/* 若棧S為空棧,則返回TRUE,否則返回FALSE *
- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
12 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 完整 word 二叉 數(shù)據(jù)結(jié)構(gòu) 實(shí)驗(yàn) 報(bào)告
鏈接地址:http://zhizhaikeji.com/p-21343792.html