




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程設(shè)計(jì)任務(wù)書(shū)學(xué)生姓名: 陳楠 專業(yè)班級(jí): 軟件zy1202班 指導(dǎo)教師: 夏紅霞 工作單位: 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 題 目: 二叉樹(shù)的建立和中序遍歷的演示課程設(shè)計(jì)要求:1、熟練掌握基本的數(shù)據(jù)結(jié)構(gòu);2、熟練掌握各種算法;3、運(yùn)用高級(jí)語(yǔ)言編寫(xiě)質(zhì)量高、風(fēng)格好的應(yīng)用程序。課程設(shè)計(jì)任務(wù): 1、系統(tǒng)應(yīng)具備的功能:(1)以二叉鏈為存儲(chǔ)結(jié)構(gòu),建立二叉樹(shù)(2)用遞歸算法和非遞歸算法實(shí)現(xiàn)二叉樹(shù)的中序遍歷(3)二叉樹(shù)中序遍歷的演示2、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì);3、主要算法設(shè)計(jì);4、編程及上機(jī)實(shí)現(xiàn);5、撰寫(xiě)課程設(shè)計(jì)報(bào)告,包括:(1)設(shè)計(jì)題目;(2)摘要和關(guān)鍵字;(3)正文,包括引言、需求分析、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、算法設(shè)計(jì)、程序?qū)崿F(xiàn)及
2、測(cè)試、不足之處、設(shè)計(jì)體會(huì)等;(4)結(jié)束語(yǔ);(5)參考文獻(xiàn)。時(shí)間安排: 2010年7月5日9日 (第19周)7月5日 查閱資料7月6日 系統(tǒng)設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),算法設(shè)計(jì)7月7日 -8日 編程并上機(jī)調(diào)試7月9日 撰寫(xiě)報(bào)告7月10日 驗(yàn)收程序,提交設(shè)計(jì)報(bào)告書(shū)。 指導(dǎo)教師簽名: 2010年7月4日 系主任(或責(zé)任教師)簽名: 2010年7月4日 二叉樹(shù)的建立和中序遍歷的演示摘要: 該程序用先序遞歸的方式建立二叉樹(shù),然后采用遞歸和非遞歸的方法中序遍歷二叉樹(shù)關(guān)鍵字: 二叉樹(shù) 中序遍歷 遞歸 非遞歸一 需求分析: 優(yōu)化復(fù)雜遞歸,提高程序效率,快速查找,插入刪除,實(shí)現(xiàn)簡(jiǎn)單而相當(dāng)有效的數(shù)據(jù)壓縮算法 ,編譯器設(shè)計(jì)
3、的核心數(shù)據(jù)結(jié)構(gòu) 。二 算法設(shè)計(jì):#include#include#define MAX_STACK 20 /*初始化棧的最大長(zhǎng)度*/#define INCREMENT 10 /*每次棧的增量*/typedef int ElemType;#define INT/*-定義數(shù)據(jù)結(jié)構(gòu)-*/*-定義樹(shù)的節(jié)點(diǎn)-*/typedef struct BiNode ElemType data; struct BiNode *lchild,*rchild; BiNode,*BTNode;/*-定義棧-*/typedef struct Stack int stacksize;/*棧的總長(zhǎng)度*/ BTNode base
4、,top;Stack,*BiStack;/*-棧的一些基本操作-*/*-初始化棧*/void InitStack(BiStack stack) stack-base=(BTNode)malloc(sizeof(BiNode)*MAX_STACK); if(!stack-base) printf(1.Memory allocation failed!n); exit(0); stack-top=stack-base; stack-stacksize=MAX_STACK; /*-插入數(shù)據(jù)元素*/void Push(BiStack stack,BTNode TreeNode) if(stack-to
5、p-stack-base)=stack-stacksize)/*當(dāng)棧滿時(shí)重新增加內(nèi)存*/ stack-stacksize+=INCREMENT; stack-base=(BTNode)realloc(stack-base,sizeof(BiNode)*stack-stacksize); if(!stack-base) printf(2.Memory allocation failed!n); exit(0); stack-top-data=TreeNode-data; stack-top-lchild=TreeNode-lchild; stack-top-rchild=TreeNode-rch
6、ild; +stack-top;/*-刪除數(shù)據(jù)元素*/void Pop(BiStack stack,BTNode *TreeNode) if(stack-top=stack-base) printf(The Stack is Empty!n); return ; *TreeNode=stack-top; -stack-top;/*-判斷棧是否為空*/int IsEmpty(Stack stack)/*當(dāng)棧是空時(shí),返回1,否則返回0*/ if(stack.top=stack.base) return 1; else return 0;/*-創(chuàng)建二叉樹(shù)-*/void InitTree(BTNode
7、 *bitree) /*初始化二叉樹(shù)根節(jié)點(diǎn)*/ *bitree=NULL; void CreateTree(BTNode *bitree) /*創(chuàng)建二叉樹(shù)*/*采用先序遞歸遍歷的方式建立二叉樹(shù)*/ ElemType data; #ifdef INT scanf(%d,&data); if(data=0) #endif #ifdef FLOAT scanf(%f,&data); if(data=0.0) #endif #ifdef CHAR scanf(%c,&data); if(data= )/*當(dāng)為空格時(shí)認(rèn)為無(wú)左或右孩子*/ #endif *bitree=NULL; else *bitree
8、=(BTNode)malloc(sizeof(BiNode); if(!*bitree) printf(4.Memory allocation failed!n); exit(1); (*bitree)-data=data; CreateTree(&(*bitree)-lchild); CreateTree(&(*bitree)-rchild); /*-訪問(wèn)樹(shù)的節(jié)點(diǎn)-*/int print(ElemType data)/*輸出樹(shù)的每個(gè)節(jié)點(diǎn)的詳細(xì)信息*/ #ifdef INT printf(%d ,data); /printf(The tree nodes details is :%dn,dat
9、a); #endif #ifdef FLOAT printf(The tree nodes details is :%fn,data); #endif #ifdef CHAR printf(The tree nodes details is :%cn,data); #endif return 1;/*-中序遍歷二叉樹(shù)-*/*遞歸中序遍歷二叉樹(shù)*/void InorderTraverse(BTNode bitree,int (*Visit)(ElemType data) if(bitree) InorderTraverse(bitree-lchild,Visit); Visit(bitree-d
10、ata); InorderTraverse(bitree-rchild,Visit); /*非遞歸中序遍歷二叉樹(shù)*/void InorderTraverse1(BTNode bitree,int (*Visit)(ElemType data) BTNode p; Stack stack; InitStack(&stack);/*初始化棧*/ while(p|!IsEmpty(stack) if(p) /*若當(dāng)前子樹(shù)非空,則將其根保存并訪問(wèn)左子樹(shù)*/ Push(&stack,p); p=p-lchild;/*一直找到樹(shù)的最左邊*/ else Pop(&stack,&p); Visit(p-dat
11、a); p=p-rchild; /*-主函數(shù)-*/int main(void) BTNode bitree; InitTree(&bitree);/*初始化根節(jié)點(diǎn)*/ printf(-整型和浮點(diǎn)型以0表示空,字符以空格表示空-n); printf(Input the tree node data:n); CreateTree(&bitree);/*創(chuàng)建二叉樹(shù)*/ printf(中序遍歷(遞歸) :n); InorderTraverse(bitree,print);/*遞歸中序遍歷二叉樹(shù)*/ printf(n); printf(中序遍歷(非遞歸) :n); InorderTraverse(bit
12、ree,print);/*非遞歸中序遍歷二叉樹(shù)*/ printf(n); return 1;三 程序運(yùn)行結(jié)果:四 不足之處: 雖然程序能正確的運(yùn)行和輸出結(jié)果了,但由于時(shí)間緊迫,程序設(shè)計(jì)的時(shí)候考慮的不太全面,導(dǎo)致程序設(shè)計(jì)時(shí)較為冗長(zhǎng)和繁雜,代碼不夠優(yōu)化。而且,手動(dòng)輸入數(shù)據(jù)比較麻煩,可以改為更為簡(jiǎn)單的讀取文本或數(shù)據(jù)庫(kù)的方法來(lái)取代手動(dòng)輸入。五 設(shè)計(jì)體會(huì):經(jīng)過(guò)這些時(shí)日的設(shè)計(jì),調(diào)試與運(yùn)行,很好的鍛煉了我的編程能力,主要是經(jīng)過(guò)對(duì)實(shí)際問(wèn)題的編程訓(xùn)練,大大拓寬了我的思路,不再拘泥于書(shū)上的一些算法,可以自己總結(jié)比較一些其他的算法,對(duì)自己編程思想的鍛煉起了很大的作用。亦提升了自己對(duì)計(jì)算機(jī)的興趣,對(duì)將來(lái)的更深遠(yuǎn)的學(xué)習(xí)無(wú)疑是有利的。六 結(jié)束語(yǔ): 充分利用前序遍歷的特點(diǎn),就可以生成二叉樹(shù)。如果把前序換成層序,算法不用改動(dòng),若換成后序,只需將
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新能源汽車企業(yè)股東退出與新能源汽車專利回購(gòu)合同
- 智能家居產(chǎn)業(yè)股權(quán)收購(gòu)及市場(chǎng)布局協(xié)議
- 互聯(lián)網(wǎng)教育股東股權(quán)合作與在線教育平臺(tái)協(xié)議
- 生態(tài)農(nóng)業(yè)項(xiàng)目股東利潤(rùn)分配及權(quán)益保障協(xié)議
- 多元化股權(quán)質(zhì)押借款合同模板
- 股權(quán)退股及投資退出協(xié)議范本(適用風(fēng)險(xiǎn)投資)
- 股權(quán)轉(zhuǎn)讓與反壟斷審查及合規(guī)承諾補(bǔ)充協(xié)議
- 國(guó)際房產(chǎn)交易購(gòu)房合同翻譯及全球物流服務(wù)協(xié)議
- 互聯(lián)網(wǎng)股權(quán)分配與商業(yè)模式創(chuàng)新協(xié)議
- 廚師技能培訓(xùn)與雇傭合同
- 繼電保護(hù)配置及整定計(jì)算
- 初高中物理銜接課件
- 血管導(dǎo)管相關(guān)血流感染預(yù)防與控制
- 汽車電氣工學(xué)一體化學(xué)生工作頁(yè)
- 工程造價(jià)咨詢服務(wù)方案(技術(shù)方案)
- 中國(guó)人的規(guī)矩
- 像科學(xué)家一樣思考
- 飛機(jī)艙門(mén)及撤離滑梯-空客320型飛機(jī)艙門(mén)結(jié)構(gòu)及操作方法
- 中建地下室鋼結(jié)構(gòu)安裝施工方案
- 變壓器監(jiān)造內(nèi)容
- 2023廣西公需科目真題(關(guān)于人才工作的重要論述)
評(píng)論
0/150
提交評(píng)論