




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、安徽省巢湖學(xué)院計(jì)算機(jī)與信息工程學(xué)院課程設(shè)計(jì)報(bào)告課程名稱 數(shù)據(jù)結(jié)構(gòu) 課題名稱 完全二叉樹操作演示 專業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 班級(jí) 10計(jì)本2班 學(xué)號(hào)10012131 姓名 聯(lián)系方式 指導(dǎo)教師 2011 年 12 月 27 目 錄1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書1.1、題目1.2、要求2、總體設(shè)計(jì)2.1、功能模塊設(shè)計(jì)2.2、所有功能模塊的流程圖3、詳細(xì)設(shè)計(jì)3.1、程序中所采用的數(shù)據(jù)結(jié)構(gòu)及存儲(chǔ)結(jié)構(gòu)的說(shuō)明3.2、算法的設(shè)計(jì)思想3.3、稀疏矩陣各種運(yùn)算的性質(zhì)變換4、調(diào)試與測(cè)試:4.1、調(diào)試方法與步驟:4.2、測(cè)試結(jié)果的分析與討論:5、時(shí)間復(fù)雜度的分析:6、源程序清單和執(zhí)行結(jié)果7、c程序設(shè)計(jì)總結(jié)8、致謝9、參考文
2、獻(xiàn)1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書1.1、題目完全二叉樹的操作演示1.2、要求(1)創(chuàng)建完全二叉樹(2)實(shí)現(xiàn)二叉樹的前序、中序和層次遍歷(3)求二叉樹的深度和葉子結(jié)點(diǎn)數(shù)(4)查找給定結(jié)點(diǎn)的雙親,祖先和左右孩子結(jié)點(diǎn)2、總體設(shè)計(jì)2.1、功能模塊設(shè)計(jì)根據(jù)課程設(shè)計(jì)題目的功能要求,各個(gè)功能模塊的組成框圖如下:建立結(jié)點(diǎn)左右孩子結(jié)束遍歷二叉樹創(chuàng)建二叉樹二叉樹的查找3、詳細(xì)設(shè)計(jì)3.1、程序中所采用的數(shù)據(jù)結(jié)構(gòu)及存儲(chǔ)結(jié)構(gòu)的說(shuō)明1順序存儲(chǔ)結(jié)構(gòu)#define max_tree_size 100typedef telemtype sqbitree【max_tree_size】;sqbitree bt;用一組地址連續(xù)的存儲(chǔ)單元
3、一次自上而下,自左至又,存儲(chǔ)完全二叉樹上的節(jié)點(diǎn)元素,即將完全二叉樹上編號(hào)為i節(jié)點(diǎn)元素存儲(chǔ)在如上定義的一維數(shù)組中下標(biāo)為i1的分量中。2鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)由二叉樹的定義可知,二叉樹的節(jié)點(diǎn)由一個(gè)數(shù)據(jù)元素和分別指向其左右子樹的兩個(gè)分支構(gòu)成。表示二叉樹的結(jié)點(diǎn)至少要包含3個(gè)域:數(shù)據(jù)域,左右指針,還可增加一個(gè)指向雙親的結(jié)點(diǎn),稱三叉鏈表。鏈表的頭指針指向二叉樹根節(jié)點(diǎn)。3.2、算法的設(shè)計(jì)思想對(duì)一棵有n個(gè)結(jié)點(diǎn)完全二叉樹的結(jié)點(diǎn)按層序編號(hào),則對(duì)任一結(jié)點(diǎn)i,有(1)如果i=1,則結(jié)點(diǎn)i是二叉樹的根,無(wú)雙親;如果i>1,則雙親是i/2(2)如果2i>n,則結(jié)點(diǎn)i無(wú)左孩子;否則其左孩子lchild(i)是結(jié)點(diǎn)2i。(
4、3)如果2i+1>n,則結(jié)點(diǎn)i無(wú)右孩子;否則其右孩子rchild(i)是結(jié)點(diǎn)2i+1.3.3、二叉樹的遍歷先序遍歷:(1)訪問(wèn)根節(jié)點(diǎn)(2)先序遍歷左子樹(3)先序遍歷右子樹中序遍歷:(1)中序遍歷左子樹(2)訪問(wèn)根節(jié)點(diǎn)(3)中序遍歷右子樹后序遍歷:(1)后序遍歷左子樹(2)后序遍歷右子樹(3)訪問(wèn)根節(jié)點(diǎn)status preordertraverse( bitree t,status( * visit)(telemtype))/采用二叉鏈表存儲(chǔ)結(jié)構(gòu),visit是對(duì)數(shù)據(jù)元素操作的應(yīng)用函數(shù)。status printelement( telemtype)printf(e);return ok;i
5、f (t)if (vistit(t->data) if (preordertraverse(t->lchild,visit) if (preordertraverse(t->rchild,visit) return ok;return error;else return ok; status inordertravserse(bitree t,status (*visit)(telemtype)/采用二叉樹鏈表存儲(chǔ)結(jié)構(gòu),visit是對(duì)數(shù)據(jù)元素操作的應(yīng)用函數(shù)initstack(s); push (s,t);while (!stackempty(s)while(gettop(s,
6、p) &&p)push(s,p->lchild);pop(s,p);if (!stackempty(s)pop(s,p); if (!visit(p->data) return error;push(s,p->rchild);return ok;status createbitree(bitree &t)/按先序次序輸入二叉樹中的節(jié)點(diǎn)的值(一個(gè)字符),空格字符表示空樹,構(gòu)造二叉鏈表表示的二叉樹。scnaf(&ch);if (ch =)t=null;elseif (!(t=(bitnode * )malloc(sizeof(bitnode) ex
7、it(overflow);t->data=ch;createbitree(t->lchild);createbitree(t->rchild);return ok;4、調(diào)試與測(cè)試:調(diào)試方法與步驟:(1)測(cè)試二叉樹的存儲(chǔ)結(jié)構(gòu)是否正確(2)測(cè)試二叉樹的遍歷是否正確(3)測(cè)試二叉樹的查找是否正確(4)測(cè)試二叉樹的輸出是否正確6、源程序清單#include <iostream.h>#define null 0#define maxsize 100typedef struct nodechar data; struct node *lch; struct node *rch
8、;btnode;int count = 0;void creatbttree(btnode *&t,char *s)btnode *stmaxsize,*p=null;int top=-1,k,j=0; char ch; t=null;ch=sj;while(ch!='0')switch(ch)case '(':top+; sttop=p; k=1; break; case ')':top-; break;case ',':k=2; break;default:p=new btnode;p->data=ch;p-&g
9、t;lch=null;p->rch=null;if(t=null)t=p;elseswitch(k)case 1:sttop->lch=p;break;case 2:sttop->rch=p; break;j+;ch=sj;void dispbttree(btnode *t)if(t!=null)cout<<t->data;if(t->lch!=null)|(t->rch!=null)cout<<'(' dispbttree(t->lch);if(t->rch!=null)cout<<'
10、,'dispbttree(t->rch);cout<<')'btnode *findnode(btnode *t,char x)btnode *p=null;if(t=null)return null;else if(t->data=x)return t;elsep=findnode(t->lch,x);if(p!=null)return p;else return findnode(t->rch,x);void preorder (btnode *t)if(t!=null)cout << t ->data <
11、< ' 'preorder (t->lch);preorder (t->rch);void inorder (btnode *t)if(t!=null)preorder (t->lch);cout << t ->data << ' 'preorder (t->rch);void postorder (btnode *t)if(t!=null)preorder (t->lch);preorder (t->rch);cout << t ->data << '
12、 'int btnodedepth (btnode *t)int lchildh, rchildh;if (t = null)return 0;elselchildh = btnodedepth (t->lch);rchildh = btnodedepth (t->rch);return (lchildh > rchildh) ? (lchildh + 1) : (rchildh + 1); int countnode (btnode *t)int num;if (t = null)num = 0;else num = 1 + countnode (t->lch
13、) + countnode (t->rch);return (num);void countleaf (btnode *t)if (t != null)if (t->lch = null && t->rch = null)count +;countleaf (t->lch);countleaf (t->rch);void main()char x;btnode *t=null,*p=null;creatbttree(t,"a(b(,d),c)");cout<<"創(chuàng)建的樹是:"dispbttree(
14、t);cout<<endl;cout<<"請(qǐng)輸入要查找的結(jié)點(diǎn):"<<endl;cin>>x;p=findnode(t,x);if(p=null)cout<<"不存在!"<<endl;elseif(p->lch=null)cout<<"沒(méi)有左孩子!"<<endl;else cout<<"左孩子是:"<<p->lch->data<<endl;if(p->rch=nu
15、ll)cout<<"沒(méi)有右孩子!"<<endl;else cout<<"右孩子是:"<<p->rch->data<<endl;cout << "按先序遍歷樹為:"preorder (t);cout << endl;cout << "按中序遍歷樹為:"inorder (t);cout << endl;cout << "按后序遍歷樹為:"postorder (t);cout << endl;cout << "節(jié)點(diǎn)總數(shù)為:"cout << countnode (t) << endl;cout << "葉子節(jié)點(diǎn)個(gè)數(shù)為:"countleaf(t);cout << count << endl;cout << "這棵樹的深度為:"cout << btnodedepth
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高級(jí)會(huì)計(jì)的激勵(lì)機(jī)制與管理策略試題及答案
- 無(wú)人機(jī)駕駛員考試基礎(chǔ)題目試題及答案
- 涪陵七年級(jí)數(shù)學(xué)試卷及答案
- 繁昌二中會(huì)考試卷及答案
- 稅務(wù)處理技巧與中級(jí)會(huì)計(jì)試題及答案
- 類似考題消防工程師試題及答案預(yù)測(cè)
- 高級(jí)審計(jì)師考試準(zhǔn)備簡(jiǎn)易方法與試題及答案
- 2025租賃合同樣品范本
- 消防安全培訓(xùn)的必要性與方法試題及答案
- 藥物副作用相關(guān)試題及解答
- 《危險(xiǎn)化學(xué)品建設(shè)項(xiàng)目安全設(shè)施設(shè)計(jì)專篇編制導(dǎo)則》編制說(shuō)明
- 人教版(PEP)2024年小升初英語(yǔ)試卷(含答案)
- 配電室消防應(yīng)急預(yù)案
- 膝關(guān)節(jié)穿刺術(shù)
- 青儲(chǔ)飼料購(gòu)銷合同范本版
- JT-T-1208-2018國(guó)際道路貨物運(yùn)輸車輛選型技術(shù)要求
- 全新店鋪轉(zhuǎn)讓合同
- 小學(xué)升初中六年級(jí)數(shù)學(xué)模擬試卷及參考答案
- 監(jiān)督執(zhí)紀(jì)工作規(guī)則
- 全麻術(shù)后蘇醒延遲的預(yù)防及護(hù)理
- 辦公區(qū)域主要風(fēng)險(xiǎn)辨識(shí)與分級(jí)管控清單
評(píng)論
0/150
提交評(píng)論