版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上一正文紅色部分表示示例內(nèi)容,供參考、實(shí)驗(yàn)?zāi)康?、鞏固和加深對數(shù)據(jù)結(jié)構(gòu)課程基本知識的理解,綜合數(shù)據(jù)結(jié)構(gòu)課程里學(xué)的理論知識,完成對排序二叉樹程序的設(shè)計。2、理解和掌握二叉樹的各種基本數(shù)據(jù)結(jié)構(gòu)的定義、存儲結(jié)構(gòu)和相應(yīng)的算法,并能夠用c語言實(shí)現(xiàn)。 3、理解排序二叉樹的建立過程。二、實(shí)驗(yàn)內(nèi)容采用llink-rlink方式存儲二叉排序樹,編寫能夠通過鍵盤輸入建立二叉排序樹,并在建立完立即在屏幕顯示中序遍歷結(jié)果的程序。三、實(shí)驗(yàn)環(huán)境1、硬件配置:Pentium(R) Dual-Core9 CUP E6500 2.93GHz,1.96的內(nèi)存2、軟件環(huán)境:Microsoft Windows
2、 XP Professional Service Pack 3,Microsoft Visual C+ 6.0四、需求分析1、輸入的形式和輸入值的范圍:根據(jù)題目要求與提示輸入一些數(shù)字,且數(shù)與數(shù)之間用空格隔開并用0作為結(jié)束符。2、輸出的形式:建立好的排序二叉樹的中序遍歷結(jié)果。 3、程序所能達(dá)到的功能:能夠通過鍵盤輸入建立二叉排序樹,并在建立完立即在屏幕顯示中序遍歷結(jié)果的程序4、測試數(shù)據(jù):輸入45 24 53 12 28 90并用空格將數(shù)隔開,以0作為結(jié)束符,如:輸入45 24 53 12 28 90輸出的中序遍歷結(jié)果為:12 24 28 45 53 90五、概要設(shè)計為了實(shí)現(xiàn)上述操作,應(yīng)以結(jié)構(gòu)體為
3、存儲結(jié)構(gòu)。實(shí)現(xiàn)如下:struct node int key;/關(guān)鍵字的值 struct node *lchild,*rchild;/左右指針BSTNode,*BSTree;1、基本操作:(1)struct node int key;/關(guān)鍵字的值 struct node *lchild,*rchild;/左右指針BSTNode,*BSTree;。(2)void CreateBST(BSTree *bst) 創(chuàng)建二叉排序樹(3)void inorder(BSTree bt) 遞歸法中序遍歷二叉排序樹(4)void InsertBST(BSTree *bst,int key) 二叉排序樹的插入結(jié)點(diǎn)2
4、、本程序包含二個模塊:(1)主程序模塊;(2)創(chuàng)建二叉排序樹、二叉排序樹的插入結(jié)點(diǎn)、遞歸法中序遍歷二叉排序樹(3)模塊調(diào)用圖:主程序模塊創(chuàng)建二叉排序樹二叉排序樹的插入結(jié)點(diǎn)遞歸法中序遍歷二叉排序樹 3、流程圖重點(diǎn)內(nèi)容流程圖如下:六、詳細(xì)設(shè)計1、存儲類型,元素類型,結(jié)點(diǎn)類型:struct node int key;/關(guān)鍵字的值 struct node *lchild,*rchild;/左右指針BSTNode,*BSTree;元素類型為整形和指針形。2、每個模塊的分析:(1)主程序模塊:main() BSTree bt; printf("please insert the numbers(
5、 以0作為結(jié)束標(biāo)志):n"); CreateBST(&bt); /*構(gòu)造排序二叉樹*/ printf("n中序遍歷結(jié)果是:"); inorder(bt); /*中序遍歷排序二叉樹*/ printf("n"); getchar();(2)創(chuàng)建二叉排序樹函數(shù)模塊void CreateBST(BSTree *bst) int key;*bst=NULL;scanf("%d",&key);while(key!=0)InsertBST(bst,key);scanf("%d",&key);二叉
6、排序樹的插入結(jié)點(diǎn)函數(shù)模塊void InsertBST(BSTree *bst,int key) BSTree s; if(*bst=NULL) s=(BSTree)malloc(sizeof(BSTNode); s->key=key; s->lchild=NULL; s->rchild=NULL; *bst=s; else if(key<(*bst)->key) InsertBST(&(*bst)->lchild),key);/將s插入左子串 else if(key>(*bst)->key) InsertBST(&(*bst)-&
7、gt;rchild),key);/將s插入右子串遞歸法中序遍歷二叉排序樹void inorder(BSTree bt) if(bt!=NULL) inorder(bt->lchild); printf("%3d",bt->key) ; inorder(bt->rchild); 3)函數(shù)調(diào)用關(guān)系圖main()CreateBST(BSTree *bst)InsertBST(BSTree *bst,int key)inorder(BSTree bt)3、完整的程序:#include"stdio.h"#include"malloc.h
8、"typedef struct node int key;/關(guān)鍵字的值 struct node *lchild,*rchild;/左右指針BSTNode,*BSTree;void InsertBST(BSTree *bst,int key) /二叉排序樹的插入結(jié)點(diǎn) BSTree s; if(*bst=NULL) s=(BSTree)malloc(sizeof(BSTNode); s->key=key; s->lchild=NULL; s->rchild=NULL; *bst=s; else if(key<(*bst)->key) InsertBST(&a
9、mp;(*bst)->lchild),key);/將s插入左子串 else if(key>(*bst)->key) InsertBST(&(*bst)->rchild),key);/將s插入右子串void CreateBST(BSTree *bst) /創(chuàng)建二叉排序樹int key;*bst=NULL;scanf("%d",&key);while(key!=0)InsertBST(bst,key);scanf("%d",&key);void inorder(BSTree bt) /遞歸法中序遍歷二叉排序樹
10、if(bt!=NULL) inorder(bt->lchild); printf("%3d",bt->key) ; inorder(bt->rchild); main() BSTree bt; printf("please insert the numbers( 以0作為結(jié)束標(biāo)志):n"); CreateBST(&bt); /*構(gòu)造排序二叉樹*/ printf("n中序遍歷結(jié)果是:"); inorder(bt); /*中序遍歷排序二叉樹*/ printf("n"); getchar();七
11、、程序使用說明及測試結(jié)果1、程序使用說明(1)本程序的運(yùn)行環(huán)境為VC6.0。(2)進(jìn)入演示程序后即顯示提示信息:請輸入數(shù)字,并以0作為結(jié)束標(biāo)志,回車;即得中序遍歷排序二叉樹結(jié)果2、測試結(jié)果:例如:輸入:45 24 53 12 28 90輸出:12 24 28 45 53 903、調(diào)試中的錯誤及解決辦法。調(diào)試過程中,遇到了許多的問題,如開始生成一棵二叉排序樹的時候,參考書本上的構(gòu)造二叉排序樹的算法,但是將樹的地址傳遞給函數(shù)的參數(shù)的時候,運(yùn)行程序的過程中有問題,后來講形式參數(shù)改為BSTree *bst,本來BSTree bst就相當(dāng)于定義了一個struct node型的指針,在加*為指向指針的指針。 運(yùn)行界面先輸入45 24 53 12 28 90后, 回車:八、實(shí)驗(yàn)小結(jié)重點(diǎn)內(nèi)容: 這次實(shí)驗(yàn)的過程中還是遇到了些許問題,創(chuàng)建二叉排序樹、二叉排序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026青海古都產(chǎn)業(yè)鏈有限公司招聘6人考試參考題庫及答案解析
- 2026中華人民共和國衢州海關(guān)編外人員招聘1人備考題庫(二)及答案詳解(奪冠系列)
- 2026廣東東莞市疾病預(yù)防控制中心(東莞市衛(wèi)生監(jiān)督所)招聘聘用人員1人備考題庫及答案詳解一套
- 2026廣西北海市動物衛(wèi)生監(jiān)督所招錄公益性崗位人員6人備考題庫及參考答案詳解一套
- 2026西藏日喀則仲巴縣民政和退役軍人事務(wù)局招聘特困人員集中供養(yǎng)服務(wù)中心護(hù)理人員1人筆試參考題庫及答案解析
- 2026湖北武漢市漢口學(xué)院航空學(xué)院飛行器設(shè)計專業(yè)教師招聘備考考試題庫及答案解析
- 2026廣東深圳安居集團(tuán)博士后創(chuàng)新實(shí)踐基地誠聘1人備考題庫及完整答案詳解1套
- 2026年第五師八十八團(tuán)生態(tài)護(hù)林員招聘備考題庫(15人)及完整答案詳解一套
- 2026廣西來賓市忻城縣職業(yè)技術(shù)學(xué)校城鎮(zhèn)公益性崗位人員招聘1人備考題庫及參考答案詳解
- 2026上海事業(yè)單位統(tǒng)考考試參考試題及答案解析
- 《筑牢安全防線 歡度平安寒假》2026年寒假安全教育主題班會課件
- 信息技術(shù)應(yīng)用創(chuàng)新軟件適配測評技術(shù)規(guī)范
- 養(yǎng)老院老人生活設(shè)施管理制度
- 2026年稅務(wù)稽查崗位考試試題及稽查實(shí)操指引含答案
- (2025年)林業(yè)系統(tǒng)事業(yè)單位招聘考試《林業(yè)知識》真題庫與答案
- 2026版安全隱患排查治理
- 短篇文言文翻譯
- 疾病產(chǎn)生分子基礎(chǔ)概論
- 演示文稿第十五章文化中心轉(zhuǎn)移
- 醫(yī)療設(shè)備購置論證評審表
- GB/T 16998-1997熱熔膠粘劑熱穩(wěn)定性測定
評論
0/150
提交評論