版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
數(shù)據(jù)結(jié)構(gòu)實驗報告實驗四實驗目的: 熟悉二叉樹結(jié)點的結(jié)構(gòu)和對二叉樹的基本操作; 掌握對二叉樹每一種操作的具體實現(xiàn); 學會利用遞歸方法編寫對二叉樹這種遞歸數(shù)據(jù)結(jié)構(gòu)進行處理的算法。實驗內(nè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;}}}求二叉樹的深度intDepth(BiTreeT){ If(T==NULL) Return0;Else{M=Depth(T->lchild);N=Depth(T->rchild);If(M>N)Return(M+1);elsereturn(N+1);}}哈夫曼樹和哈夫曼編碼:從終端輸入若干個字符,統(tǒng)計字符出現(xiàn)的頻率,將字符出現(xiàn)的頻率作為節(jié)點的權(quán)值,建立哈夫曼樹,然后對各字符進行哈夫曼編碼,最后打印哈夫曼樹和對應的哈夫曼編碼。#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<<"請輸入各個字符(輸入#鍵結(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<<"輸出各個元素的權(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<<"建立的哈夫曼樹如下列次序:"; 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哈弗曼樹表"<<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é)點的哈夫曼編碼是:%s",i,HC[i]); } cout<<endl; free(cd);}voidmain(){ HuffmanTreeHT; HuffmanCodeHC; Frequent(); intm,n; int*w,W[maxsize]; cout<<"請輸入哈夫曼樹的元素個數(shù):"; cin>>m; for(n=0;n<m;++n) { cout
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度工程材料委托運輸與綠色通道拓展協(xié)議3篇
- 2024版房地產(chǎn)交易居間服務協(xié)議一
- 2024汽車維修技師職稱評定合同示范文本3篇
- 2024版土石方購買合同范本
- 2025年度戶外運動商品買賣合同標準
- 2024年版幼兒園合資經(jīng)營協(xié)議模板版
- 二零二五年度古建筑修復裝修工程合同范本6篇
- 2025年度航空公司機載娛樂系統(tǒng)建設合同2篇
- 2024音樂作品授權(quán)及演唱會門票銷售代理合同書3篇
- 2024年版建筑工程意外傷害綜合保障合同版B版
- (八省聯(lián)考)河南省2025年高考綜合改革適應性演練 思想政治試卷(含答案)
- 綜合測試 散文閱讀(多文本)(解析版)-2025年高考語文一輪復習(新高考)
- 福建省能化集團筆試題目
- 手糊補強工A卷考試 (1)附有答案
- AQL標準抽樣檢驗表
- 美國Control4智能家居設計方案解說資料
- DES算法Matlab代碼
- 交通事故快速處理單(正反打印)
- 電纜熱穩(wěn)定校驗計算書
- 2020國際大專辯論賽順境或逆境更有利于人的成長
- 管理制度評價表(填寫模板)
評論
0/150
提交評論