版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)》報(bào)告</p><p> 設(shè)計(jì)名稱 主函數(shù)和層次建立二叉樹(shù) </p><p> 專 業(yè) 信息與計(jì)算科學(xué) </p><p> 年 級(jí) 11級(jí) </p><p&g
2、t; 組 長(zhǎng) </p><p> 學(xué) 號(hào) </p><p> 組 員 </p><p><b> 目 錄</b></p><p&g
3、t;<b> 一、設(shè)計(jì)題目1</b></p><p><b> 二、運(yùn)行環(huán)境1</b></p><p><b> 三、設(shè)計(jì)思想1</b></p><p><b> 四、流程圖1</b></p><p> 五、算法設(shè)計(jì)分析1</p&
4、gt;<p> 六、運(yùn)行結(jié)果分析3</p><p><b> 七、學(xué)習(xí)總結(jié)6</b></p><p><b> 八、源代碼6</b></p><p><b> 主函數(shù)代碼6</b></p><p> 層次建立二叉樹(shù)代碼8</p>
5、<p><b> 一、設(shè)計(jì)題目 </b></p><p> 主函數(shù)設(shè)計(jì)和層次建立二叉樹(shù)</p><p><b> 二、運(yùn)行環(huán)境</b></p><p><b> VC++6.0</b></p><p><b> 三、設(shè)計(jì)思想</b>&
6、lt;/p><p><b> 主函數(shù)設(shè)計(jì)</b></p><p> 由于程序的功能進(jìn)行的了模塊化設(shè)計(jì),分別由各小組完成,所以主函數(shù)的設(shè)計(jì)是對(duì)所有模塊的調(diào)用以實(shí)現(xiàn)函數(shù)的各種功能,進(jìn)而完成程序的功能實(shí)現(xiàn)。</p><p> 各個(gè)功能模塊是并列關(guān)系,就用switch分支結(jié)構(gòu)實(shí)現(xiàn)對(duì)功能函數(shù)的平行調(diào)用。</p><p> 為了
7、使操作者清楚自己的指令所實(shí)現(xiàn)的功能,所以設(shè)計(jì)了一個(gè)主界面來(lái)介紹模塊功能和對(duì)應(yīng)的操作指令。</p><p><b> 四、流程圖</b></p><p> 略(本小組負(fù)責(zé)設(shè)計(jì)主函數(shù)故流程圖省略)。</p><p><b> 五、算法設(shè)計(jì)分析</b></p><p> 我們小組選用層次建立法建立
8、二叉樹(shù),操作時(shí)按層次直接輸入即可,不需要將元素進(jìn)行先序或中序或后序處理。為了實(shí)現(xiàn)二叉樹(shù)的層次輸入建立而采用隊(duì)列作為二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)。另外,還選用了結(jié)構(gòu)體等數(shù)據(jù)結(jié)構(gòu)。</p><p> 具體數(shù)據(jù)結(jié)構(gòu)介紹如下:</p><p><b> 二叉樹(shù)結(jié)點(diǎn)結(jié)構(gòu)體:</b></p><p> typedef struct Binnode{</p&
9、gt;<p> char data;</p><p> struct Binnode *lchild;</p><p> struct Binnode *rchild;</p><p><b> };</b></p><p> 該結(jié)構(gòu)體包含數(shù)據(jù)域(儲(chǔ)存結(jié)點(diǎn)信息)和指針域(儲(chǔ)存結(jié)點(diǎn)的左右孩子結(jié)點(diǎn)的指
10、針)。</p><p><b> 二叉樹(shù)結(jié)點(diǎn)隊(duì)列:</b></p><p> typedef struct queue{</p><p> Bintree data[30];</p><p> int front;</p><p><b> int rear;</b>
11、;</p><p><b> };</b></p><p> 該結(jié)構(gòu)體包含一個(gè)Bintree類型的數(shù)組,其內(nèi)儲(chǔ)存結(jié)點(diǎn)信息。</p><p> 層次建立二叉樹(shù)的算法設(shè)計(jì)如下:</p><p> Bintree Level_Creat()</p><p><b> {</b&
12、gt;</p><p> Bintree root,p,s;</p><p> queue node;</p><p> node.front=node.rear=0;</p><p><b> char ch;</b></p><p> ch=getchar();</p>
13、<p> if(ch=='&')</p><p><b> {</b></p><p> return NULL;</p><p><b> }</b></p><p> root=(Binnode*)malloc(sizeof(Binnode)); /
14、/生成根結(jié)點(diǎn)</p><p> root->data=ch;</p><p> node.data[node.rear++]=root; //用隊(duì)列實(shí)現(xiàn)層次遍歷</p><p> while(node.front<node.rear)</p><p><b> {</b></p><
15、;p> p=node.data[node.front++];</p><p> ch=getchar(); //為了簡(jiǎn)化操作,分別對(duì)左右子結(jié)點(diǎn)進(jìn)行賦值。</p><p> if(ch!='&')//子樹(shù)不空則進(jìn)隊(duì)列進(jìn)行擴(kuò)充。下同</p><p><b> {</b></p><p>
16、 s=(Binnode*)malloc(sizeof(Binnode));</p><p> s->data=ch;</p><p> p->lchild=s;</p><p> node.data[node.rear++]=s;</p><p><b> }</b></p><
17、p><b> else</b></p><p><b> {</b></p><p> p->lchild=NULL;</p><p><b> }</b></p><p> ch=getchar();</p><p> if(c
18、h!='&')</p><p><b> {</b></p><p> s=(Binnode*)malloc(sizeof(Binnode));</p><p> s->data=ch;</p><p> p->rchild=s;</p><p> n
19、ode.data[node.rear++]=s;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> p->rchild=NULL;</p><p>&l
20、t;b> }</b></p><p><b> }</b></p><p> return root;</p><p><b> }</b></p><p><b> 六、運(yùn)行結(jié)果分析</b></p><p><b>
21、; 主界面運(yùn)行結(jié)果分析</b></p><p> 輸入任意鍵進(jìn)入選項(xiàng)操作界面</p><p> 輸入1—12 實(shí)現(xiàn)所選操作</p><p> 層次建立二叉樹(shù)運(yùn)行結(jié)果分析:</p><p> 進(jìn)行輸入操作時(shí)要注意程序終止條件,由于我們小組采用的是層次建立,所以結(jié)束條件為當(dāng)二叉樹(shù)的地所有葉子結(jié)點(diǎn)的左右孩子指針域?yàn)榭諘r(shí)程序結(jié)束
22、:</p><p><b> 簡(jiǎn)單舉例:</b></p><p> 輸入ABC&DEFGH&L&I&&&&&&&&</p><p><b> 輸出結(jié)果如下;</b></p><p><b> 七
23、、學(xué)習(xí)總結(jié)</b></p><p> 我們學(xué)習(xí)小組在做這次課程設(shè)計(jì)的時(shí)候我們很團(tuán)結(jié) 作為組長(zhǎng)的我, 把我們每個(gè)人的任務(wù)都部署的很詳細(xì) 每個(gè)人都應(yīng)該做些什么, , 我們分工明確 配合融洽 互相幫助 一起探討整個(gè)課程設(shè)計(jì)的中心思想.通過(guò)這次課程設(shè)計(jì),我們發(fā)現(xiàn),對(duì)于所學(xué)的知識(shí),我們掌握的不是很好,我們需要將知識(shí)理解透徹,不應(yīng)該只學(xué)習(xí)表面的淺層的知識(shí), 我們覺(jué)得我們這次的課程設(shè)計(jì)完成的不是
24、很好,我們組的成員應(yīng)該好好思考一下,找到我們的不足,為下一次的課程設(shè)計(jì)做一個(gè)完美的鋪墊。我們會(huì)繼續(xù)改進(jìn),繼續(xù)努力的.還有通過(guò)這次課程設(shè)計(jì) 我們不但使同學(xué)關(guān)系更加和諧 而且還能增進(jìn)我們之間的團(tuán)隊(duì)意識(shí) 我覺(jué)得這是一項(xiàng)很好的活動(dòng).。我建議老師以后能多多給我們這樣的機(jī)會(huì),來(lái)培養(yǎng)我們的一些能力!總之通過(guò)這項(xiàng)活動(dòng) 。我們雖說(shuō)面對(duì)大的程序有些不知所措 但是我們總體來(lái)說(shuō)還是很開(kāi)心的!</p><p><b>
25、。</b></p><p><b> 八、源代碼</b></p><p><b> 主函數(shù)代碼</b></p><p> #include<stdio.h></p><p> #include<string.h></p><p>
26、 #include<stdlib.h>//清屏函數(shù)頭文件</p><p> void jiemie1()</p><p><b> {</b></p><p> system("CLS");</p><p> printf("=======================
27、=========================\n");</p><p> printf("==================歡迎進(jìn)入主界面!===============\n");</p><p> printf(" \n");<
28、/p><p> printf(" 1、輸出家族樹(shù)\n");</p><p> printf(" 2、統(tǒng)計(jì)家族成員數(shù)目查找\n");</p><p> printf(" 3、向家族中添加一個(gè)新成員\n");</p><p&
29、gt; printf(" 4、確定某一成員是第幾代\n");</p><p> printf(" 5、查找某一成員的兄弟\n");</p><p> printf(" 6、查找某一成員的雙親\n");</p><p> printf(
30、" 7、查找某一成員的鼻祖\n");</p><p> printf(" 8、查找某一成員的堂兄弟\n");</p><p> printf(" 9、查找某一成員是否存在\n");</p><p> printf("
31、 10、查找某一成員的子孫后代\n");</p><p> printf(" 11、查找某一成員的所有孩子\n");</p><p> printf(" 12、查找某一成員的所有祖先路徑\n");</p><p> //printf("
32、 14、進(jìn)入**********************\n");</p><p> printf("================================================\n");</p><p> //printf("請(qǐng)選擇你的操作選項(xiàng):\n");</p><p><
33、;b> }</b></p><p> void hanshu1()</p><p><b> {}</b></p><p> void jiemian2(int n)</p><p><b> {</b></p><p><b> sw
34、itch(n)</b></p><p><b> {</b></p><p> case 1:printf("執(zhí)行函數(shù)1->輸出家族樹(shù)\n");break;</p><p> case 2:printf("執(zhí)行函數(shù)2->統(tǒng)計(jì)家族成員數(shù)目查找\n");break;</p&
35、gt;<p> case 3:printf("執(zhí)行函數(shù)3->向家族中添加一個(gè)新成員\n");break;</p><p> case 4:printf("執(zhí)行函數(shù)4->確定某一成員是第幾代\n");break;</p><p> case 5:printf("執(zhí)行函數(shù)5->查找某一成員的兄弟\n&quo
36、t;);break;</p><p> case 6:printf("執(zhí)行函數(shù)6->查找某一成員的雙親\n");break;</p><p> case 7:printf("執(zhí)行函數(shù)7->查找某一成員的鼻祖\n");break;</p><p> case 8:printf("執(zhí)行函數(shù)8->查
37、找某一成員的堂兄弟\n");break;</p><p> case 9:printf("執(zhí)行函數(shù)9->查找某一成員是否存在\n");break;</p><p> case 10:printf("執(zhí)行函數(shù)10->查找某一成員的子孫后代\n");break;</p><p> case 11:pri
38、ntf("執(zhí)行函數(shù)11->查找某一成員的所有孩子\n");break;</p><p> case 12:printf("執(zhí)行函數(shù)12->查找某一成員的所有祖先路徑\n");break;</p><p> //case 13:printf("執(zhí)行函數(shù)13\n");hanshu1();break;</p>
39、<p> //case 14:printf("執(zhí)行函數(shù)14\n");hanshu1();break;</p><p> default:printf("輸入有誤!!!!!!!!!!!!!!\n");break;</p><p><b> }</b></p><p><b>
40、 }</b></p><p> int main()</p><p><b> {</b></p><p> int i;char ch;</p><p> ch=getchar();</p><p> while(ch!='w')</p>&l
41、t;p><b> {</b></p><p><b> ch='1';</b></p><p> jiemie1();</p><p> system("PAUSE");</p><p> system("CLS");</
42、p><p> printf("請(qǐng)選擇你的操作選項(xiàng):\n");</p><p> scanf("%d",&i);</p><p> //system("PAUSE");</p><p> //system("CLS");</p><p
43、> jiemian2(i);</p><p> system("PAUSE");</p><p> ch=getchar();</p><p><b> }</b></p><p><b> return 0;</b></p><p>&l
44、t;b> }</b></p><p><b> 層次建立二叉樹(shù)代碼</b></p><p> #include<stdio.h></p><p> #include<malloc.h></p><p> typedef struct Binnode{//二叉樹(shù)結(jié)點(diǎn)結(jié)構(gòu)體
45、</p><p> char data;</p><p> struct Binnode *lchild;</p><p> struct Binnode *rchild;</p><p><b> };</b></p><p> typedef Binnode *Bintree ;&l
46、t;/p><p> typedef struct queue{ //二叉樹(shù)結(jié)點(diǎn)隊(duì)列</p><p> Bintree data[30];</p><p> int front;</p><p><b> int rear;</b></p><p><b> };</b>
47、</p><p> void Inorder1(Bintree t)</p><p><b> {</b></p><p> if(t!=NULL)</p><p><b> {</b></p><p> Inorder1(t->lchild);</p&
48、gt;<p> printf("%c",t->data);</p><p> Inorder1(t->rchild);</p><p><b> }</b></p><p><b> }</b></p><p> Bintree Level_C
49、reat()</p><p><b> {</b></p><p> Bintree root,p,s;</p><p> queue node;</p><p> node.front=node.rear=0;</p><p><b> char ch;</b>&
50、lt;/p><p> ch=getchar();</p><p> if(ch=='&')</p><p><b> {</b></p><p> return NULL;</p><p><b> }</b></p><p&
51、gt; root=(Binnode*)malloc(sizeof(Binnode)); //生成根結(jié)點(diǎn)</p><p> root->data=ch;</p><p> node.data[node.rear++]=root; //用隊(duì)列實(shí)現(xiàn)層次遍歷</p><p> while(node.front<node.rear)</p>
52、<p><b> {</b></p><p> p=node.data[node.front++];</p><p> ch=getchar(); //為了簡(jiǎn)化操作,分別對(duì)左右子結(jié)點(diǎn)進(jìn)行賦值。</p><p> if(ch!='&')//子樹(shù)不空則進(jìn)隊(duì)列進(jìn)行擴(kuò)充。下同</p><p&
53、gt;<b> {</b></p><p> s=(Binnode*)malloc(sizeof(Binnode));</p><p> s->data=ch;</p><p> p->lchild=s;</p><p> node.data[node.rear++]=s;</p>&
54、lt;p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> p->lchild=NULL;</p><p><b> }</b></p><p
55、> ch=getchar();</p><p> if(ch!='&')</p><p><b> {</b></p><p> s=(Binnode*)malloc(sizeof(Binnode));</p><p> s->data=ch;</p><
56、p> p->rchild=s;</p><p> node.data[node.rear++]=s;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p&
57、gt; p->rchild=NULL;</p><p><b> }</b></p><p><b> }</b></p><p> return root;</p><p><b> }</b></p><p> void Level
58、order(Bintree t)</p><p><b> {</b></p><p><b> queue q;</b></p><p> q.data[0]=t;</p><p> q.front=0;q.rear=1;</p><p> printf(&quo
59、t;層次遍歷二叉樹(shù)結(jié)果:");</p><p> while(q.front<q.rear)</p><p><b> {</b></p><p> if(q.data[q.front])</p><p><b> {</b></p><p> pr
60、intf("%c",q.data[q.front]->data);</p><p> q.data[q.rear++]=q.data[q.front]->lchild;</p><p> q.data[q.rear++]=q.data[q.front]->rchild;</p><p> q.front++;</p&
61、gt;<p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> q.front++;</p><p><b> }</b></p><p&g
62、t;<b> }</b></p><p> printf("\n\n");</p><p><b> }</b></p><p> int main()</p><p><b> {</b></p><p> Bintre
63、e root;</p><p> root=Level_Creat();</p><p> Inorder1(root);//測(cè)試,中序遍歷</p><p> Levelorder(root);</p><p><b> return 0;</b></p><p><b> }
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二叉樹(shù)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--按層次遍歷二叉樹(shù)
- 《數(shù)據(jù)結(jié)構(gòu)遍歷二叉樹(shù)》課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---計(jì)算二叉樹(shù)高度
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---二叉樹(shù)的建立和遍歷的演示
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----二叉樹(shù)的應(yīng)用
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--二叉樹(shù)及應(yīng)用
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---線索二叉樹(shù)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--二叉樹(shù)的遍歷
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---二叉樹(shù)的操作
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)--二叉排序樹(shù)調(diào)整為平衡二叉樹(shù)
- 數(shù)據(jù)結(jié)構(gòu)樹(shù)和二叉樹(shù)ppt
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--二叉樹(shù)的相關(guān)操作
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--二叉樹(shù)的算法
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----二叉樹(shù)平衡的判定
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--樹(shù)的應(yīng)用_樹(shù)和二叉樹(shù)的轉(zhuǎn)換
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-二叉樹(shù)的基本操作
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)之二叉樹(shù)的遍歷
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--二叉樹(shù)生成家譜
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)之-樹(shù)與二叉樹(shù)的轉(zhuǎn)換
評(píng)論
0/150
提交評(píng)論