




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)四實(shí)驗(yàn)?zāi)康模?熟悉二叉樹(shù)結(jié)點(diǎn)的結(jié)構(gòu)和對(duì)二叉樹(shù)的基本操作; 掌握對(duì)二叉樹(shù)每一種操作的具體實(shí)現(xiàn); 學(xué)會(huì)利用遞歸方法編寫(xiě)對(duì)二叉樹(shù)這種遞歸數(shù)據(jù)結(jié)構(gòu)進(jìn)行處理的算法。實(shí)驗(yàn)內(nèi)容:定義二叉樹(shù)的類(lèi)型#defineMaxsize100#defineMaxwidth40typedefcharelemtype;typedefstructnode{elemtypedata;structnode*left,*right;}BTree;2、中序遍歷的(非)遞歸算法voidInOrderTraverse(BiTreeT){ InitStack(S);p=T; q=newBiTree;while(p||StackEmpty(S){ If(p){Push(S,p);P=p->lchild;}Else{ Pop(S,q);cout<<q->data;p=q->rchild;}}}求二叉樹(shù)的深度intDepth(BiTreeT){ If(T==NULL) Return0;Else{M=Depth(T->lchild);N=Depth(T->rchild);If(M>N)Return(M+1);elsereturn(N+1);}}哈夫曼樹(shù)和哈夫曼編碼:從終端輸入若干個(gè)字符,統(tǒng)計(jì)字符出現(xiàn)的頻率,將字符出現(xiàn)的頻率作為節(jié)點(diǎn)的權(quán)值,建立哈夫曼樹(shù),然后對(duì)各字符進(jìn)行哈夫曼編碼,最后打印哈夫曼樹(shù)和對(duì)應(yīng)的哈夫曼編碼。#include<iostream.h>#include<iomanip.h>#include<stdlib.h>#include<string.h>#include<stdio.h>#definemaxsize100structfrequence{ chara; intn;};typedefstruct{ unsignedintweight; unsignedintparent,lchild,rchild;}HTNode,*HuffmanTree;typedefchar**HuffmanCode;voidFrequent(){ frequencech[27]; inti=0; for(;i<=26;i++) { ch[i].n=0; } cout<<"請(qǐng)輸入各個(gè)字符(輸入#鍵結(jié)束輸入):"; charc; cin>>c; boolflag; while(c!='#') { i=1; flag=false; for(;i<=ch[0].n;i++) { if(c==ch[i].a) { flag=true; break; } } if(flag) { ch[i].n++; } else { ch[0].n++; ch[ch[0].n].n++; ch[ch[0].n].a=c; } cin>>c; } for(intj=1;j<=ch[0].n;j++) { cout<<ch[j].a<<""<<ch[j].n<<endl; }}voidSelect(HuffmanTreeHT,inti,int&s1,int&s2){ intj,k=1; while(HT[k].parent!=0) k++; s1=k; for(j=1;j<=i;++j) if(HT[j].parent==0&&HT[j].weight<HT[s1].weight) s1=j; k=1; while((HT[k].parent!=0||k==s1)) k++; s2=k; for(j=1;j<=i;++j) if(HT[j].parent==0&&HT[j].weight<HT[s2].weight&&j!=s1) s2=j;}voidHuffmanCoding(HuffmanTree&HT,HuffmanCode&HC,int*w,intn){ intm,i,s1,s2,start,c,f; HuffmanTreep; if(n<=1) return; m=2*n-1; HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode)); for(p=HT+1,i=1;i<=n;++i,++p,++w) { p->weight=*w; cout<<"輸出各個(gè)元素的權(quán)值"<<endl; cout<<"HT["<<i<<"].weight="<<p->weight<<""; p->parent=0; p->lchild=0; p->rchild=0; } for(;i<=m;++i,++p) { p->weight=0; p->parent=0; p->lchild=0; p->rchild=0; }cout<<endl<<endl<<"建立的哈夫曼樹(shù)如下列次序:"; for(i=n+1;i<=m;++i) { Select(HT,i-1,s1,s2); HT[s1].parent=i; HT[s2].parent=i; HT[i].lchild=s1; HT[i].rchild=s2; HT[i].weight=HT[s1].weight+HT[s2].weight; cout<<endl<<"HT["<<s1<<"]andHT["<<s2<<"]create"; cout<<"HT["<<i<<"],weight="<<HT[i].weight; } cout<<"\n哈弗曼樹(shù)表"<<endl; cout<<"iweightparentlchildrchild"<<endl; for(p=HT+1,i=1;i<=m;i++,p++) cout<<setw(2)<<i<<setw(7)<<p->weight<<setw(6)<<p->parent<<setw(7)<<p->lchild<<setw(8)<<p->rchild<<endl; HC=(HuffmanCode)malloc((n+1)*sizeof(char*)); char*cd; cd=(char*)malloc(n*sizeof(char)); cd[n-1]='\0'; cout<<"哈夫曼編碼如下:"<<endl; for(i=1;i<=n;++i) { start=n-1; for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent) if(HT[f].lchild==c) cd[--start]='0'; else cd[--start]='1'; HC[i]=(char*)malloc((n-start)*sizeof(char)); strcpy(HC[i],&cd[start]); printf("\nHT[%d]節(jié)點(diǎn)的哈夫曼編碼是:%s",i,HC[i]); } cout<<endl; free(cd);}voidmain(){ HuffmanTreeHT; HuffmanCodeHC; Frequent(); intm,n; int*w,W[maxsize]; cout<<"請(qǐng)輸入哈夫曼樹(shù)的元素個(gè)數(shù):"; cin>>m; for(n=0;n<m;++n) { cout
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年02月湖北孝感市漢川市事業(yè)單位統(tǒng)一公開(kāi)招聘工作人員120人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 課題開(kāi)題報(bào)告:產(chǎn)教融合的痛點(diǎn)堵點(diǎn)難點(diǎn)分析及對(duì)策建議
- 化學(xué)纖維制床褥單企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 鱗皮清除劑企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略研究報(bào)告
- 臨時(shí)工勞動(dòng)保障協(xié)議
- 仿制藥注冊(cè)申報(bào)風(fēng)險(xiǎn)管理咨詢(xún)行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 高鐵酸鹽及鐵酸鹽企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 椅子企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略研究報(bào)告
- 家居空間定制合同
- 二零二五年度果樹(shù)租賃與果樹(shù)產(chǎn)業(yè)鏈拓展合同
- 2025年湖南大眾傳媒職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)學(xué)生專(zhuān)用
- 開(kāi)學(xué)安全第一課主題班會(huì)課件
- 一年級(jí)珍惜糧食主題班會(huì)學(xué)習(xí)教案
- 新版《醫(yī)療器械經(jīng)營(yíng)質(zhì)量管理規(guī)范》(2024)培訓(xùn)試題及答案
- 2025年高縣縣屬?lài)?guó)企業(yè)公開(kāi)招聘工作人員高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年人教版數(shù)學(xué)五年級(jí)下冊(cè)教學(xué)計(jì)劃(含進(jìn)度表)
- 海岸動(dòng)力學(xué)英文課件Coastal Hydrodynamics-復(fù)習(xí)
- 第7課 課題二《清潔工具與生活·創(chuàng)意清潔工具設(shè)計(jì)》(說(shuō)課稿)-2023-2024學(xué)年四年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)浙教版
- 碳足跡研究-洞察分析
- 2025年初級(jí)社會(huì)工作者綜合能力全國(guó)考試題庫(kù)(含答案)
- 部編人教版二年級(jí)道德與法治下冊(cè)同步練習(xí)(全冊(cè))
評(píng)論
0/150
提交評(píng)論