哈夫曼樹(shù)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)

上傳人:仙*** 文檔編號(hào):30656445 上傳時(shí)間:2021-10-11 格式:DOC 頁(yè)數(shù):23 大小:341.02KB
收藏 版權(quán)申訴 舉報(bào) 下載
哈夫曼樹(shù)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第1頁(yè)
第1頁(yè) / 共23頁(yè)
哈夫曼樹(shù)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第2頁(yè)
第2頁(yè) / 共23頁(yè)
哈夫曼樹(shù)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第3頁(yè)
第3頁(yè) / 共23頁(yè)

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《哈夫曼樹(shù)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《哈夫曼樹(shù)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(23頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、 《 數(shù)據(jù)結(jié)構(gòu) 》課程設(shè)計(jì) ——赫夫曼編碼/譯碼器設(shè)計(jì) 指導(dǎo)教師:孫樹(shù)森、周維達(dá) 班級(jí):09數(shù)媒(2)班 學(xué)號(hào):E09700203 姓名:林真超 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告 一、題目: 赫夫曼編碼/譯碼器設(shè)計(jì) 二、目的: 1、提高分析問(wèn)題、解決問(wèn)題的能力,進(jìn)一步鞏固數(shù)據(jù)結(jié)構(gòu)各種原理與方法。 2、熟悉掌握一門計(jì)算機(jī)語(yǔ)言,可以進(jìn)行數(shù)據(jù)算法的設(shè)計(jì)。 三、要求 3.1總體要求 1、要充分認(rèn)識(shí)課程設(shè)計(jì)對(duì)培養(yǎng)自己的重要性,認(rèn)真做好設(shè)計(jì)前的各項(xiàng)準(zhǔn)備工作。尤其是對(duì)編程軟件的使用有基本的認(rèn)識(shí)。 2、既要虛心接受老師的指導(dǎo),又要

2、充分發(fā)揮主觀能動(dòng)性。結(jié)合課題,獨(dú)立思考,努力鉆研,勤于實(shí)踐,勇于創(chuàng)新。 3、獨(dú)立按時(shí)完成規(guī)定的工作任務(wù),不得弄虛作假,不準(zhǔn)抄襲他人內(nèi)容,否則成績(jī)以不及格計(jì)。 4、在設(shè)計(jì)過(guò)程中,要嚴(yán)格要求自己,樹(shù)立嚴(yán)肅、嚴(yán)密、嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度,必須按時(shí)、按質(zhì)、按量完成課程設(shè)計(jì)。 3.2實(shí)施要求 1、理解赫夫曼編碼/譯碼的確切意義。 2、獨(dú)立進(jìn)行方案的制定,系統(tǒng)結(jié)構(gòu)設(shè)計(jì)要合理。 3、在程序開(kāi)發(fā)時(shí),則必須清楚主要實(shí)現(xiàn)函數(shù)的目的和作用,需要在程序書寫時(shí)說(shuō)明做適當(dāng)?shù)淖⑨?。在寫課設(shè)報(bào)告時(shí),必須要將主要函數(shù)的功能和參數(shù)做詳細(xì)的說(shuō)明。 4、通過(guò)多組數(shù)據(jù)來(lái)檢測(cè)該系統(tǒng)的穩(wěn)定性和正確性。 3.3 課程設(shè)計(jì)報(bào)告的內(nèi)容及

3、要求 在完成課題驗(yàn)收后,學(xué)生應(yīng)在規(guī)定的時(shí)間內(nèi)完成課程設(shè)計(jì)報(bào)告一份(不少于2000字)。 1 一、實(shí)驗(yàn)?zāi)康? 1. 進(jìn)一步掌握最優(yōu)二叉樹(shù)的含義。 2. 掌握最優(yōu)二叉樹(shù)的結(jié)構(gòu)特征,以及各種存儲(chǔ)結(jié)構(gòu)的特點(diǎn)及使用范圍。 3. 熟練掌握哈夫曼樹(shù)的建立和哈夫曼編碼方法。 4. 掌握用指針類型描述、訪問(wèn)和處理運(yùn)算。 二、實(shí)驗(yàn)原理 哈夫曼(Huffman)編碼屬于碼詞長(zhǎng)度可變的編碼類,是哈夫曼在1952年提出的一種編碼方法,即從下到上的編碼方法。同其他碼詞長(zhǎng)度可變的編碼一樣,可區(qū)別的不同碼詞的生成是基于不同符號(hào)出現(xiàn)的不同概率。生成哈夫曼編碼算法基于一種稱為“編碼樹(shù)”(coding

4、 tree)的技術(shù)。算法步驟如下: (1)初始化,根據(jù)符號(hào)概率的大小按由大到小順序?qū)Ψ?hào)進(jìn)行排序。 (2)把概率最小的兩個(gè)符號(hào)組成一個(gè)新符號(hào)(節(jié)點(diǎn)),即新符號(hào)的概率等于這兩個(gè)符號(hào)概率之和。 (3)重復(fù)第2步,直到形成一個(gè)符號(hào)為止(樹(shù)),其概率最后等于1。 (4)從編碼樹(shù)的根開(kāi)始回溯到原始的符號(hào),并將每一下分枝賦值為1,上分枝賦值為0。 譯碼的過(guò)程是分解電文中字符串,從根出發(fā),按字符“0”或“1”確定找做孩子或右孩子,直至葉子節(jié)點(diǎn),便求得該子串相應(yīng)的字符。 三、實(shí)驗(yàn)內(nèi)容 (一)需求分析 一個(gè)完整的系統(tǒng)應(yīng)具有以下功能: (1) I:初始化。從終端讀入字符集大小n,以及n個(gè)

5、字符和n個(gè)權(quán)值,建立哈夫曼樹(shù),并將它存于文件hfmTree中。 (2) E:編碼。利用已建好的哈夫曼樹(shù),對(duì)文件ToBeTran中的正文進(jìn)行編碼,然后將結(jié)果存入文件CodeFile中。 (3) D:譯碼。利用已建好的哈夫曼樹(shù)將文件CodeFile中的代碼進(jìn)行譯碼,結(jié)果存入文件Textfile中。 (4) P:印代碼文件(Print).將文件CodeFile以緊湊格式顯示在終端上,每行50個(gè)代碼。同時(shí)將此字符形式的編碼文件寫入文件CodePrin中。 (5) T:印哈夫曼樹(shù)(Treeprinting).將已在內(nèi)存中的哈夫曼樹(shù)以直觀的方式(比如樹(shù))顯示在終端上,同時(shí)將此字符形式的哈夫曼樹(shù)寫入

6、文件TreePrint 中。 (二)實(shí)驗(yàn)步驟 1.定義結(jié)點(diǎn)結(jié)構(gòu),定義哈夫曼樹(shù)結(jié)構(gòu); 2.初始化哈夫曼樹(shù),存儲(chǔ)哈夫曼樹(shù)信息; 3.定義求哈夫曼編碼的函數(shù); 4.定義譯哈夫曼編碼的函數(shù); 5.寫出主函數(shù)。 6.測(cè)試系統(tǒng)。 (三)概要設(shè)計(jì) 1 設(shè)計(jì)思想 赫夫曼樹(shù)用鄰接矩陣作為存儲(chǔ)結(jié)構(gòu),借助靜態(tài)鏈表來(lái)實(shí)現(xiàn)遍歷。 2 函數(shù)間的關(guān)系 函數(shù)間的關(guān)系如圖所示: 主函數(shù) 顯示表頭 初始化樹(shù) 輸入字符 編碼 譯碼 打印編碼 打印赫夫曼樹(shù) 選最小兩個(gè)權(quán)值 Select() 圖3.1 函數(shù)間的關(guān)系 3 數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì) 赫夫曼編\譯碼器的主要功能是先建立赫夫

7、曼樹(shù),然后利用建好的赫夫曼樹(shù)生成赫夫曼編碼后進(jìn)行譯碼 。 在數(shù)據(jù)通信中,經(jīng)常需要將傳送的文字轉(zhuǎn)換成由二進(jìn)制字符0、1組成的二進(jìn)制串,稱之為編碼。構(gòu)造一棵赫夫曼樹(shù),規(guī)定赫夫曼樹(shù)中的左分之代表0,右分支代表1,則從根節(jié)點(diǎn)到每個(gè)葉子節(jié)點(diǎn)所經(jīng)過(guò)的路徑分支組成的0和1的序列便為該節(jié)點(diǎn)對(duì)應(yīng)字符的編碼,稱之為赫夫曼編碼。 最簡(jiǎn)單的二進(jìn)制編碼方式是等長(zhǎng)編碼。若采用不等長(zhǎng)編碼,讓出現(xiàn)頻率高的字符具有較短的編碼,讓出現(xiàn)頻率低的字符具有較長(zhǎng)的編碼,這樣可能縮短傳送電文的總長(zhǎng)度。赫夫曼樹(shù)課用于構(gòu)造使電文的編碼總長(zhǎng)最短的編碼方案。 其主要流程圖如圖3.2所示。 開(kāi)始 結(jié)點(diǎn)數(shù)是否大于1 將data和權(quán)值賦

8、給ht 輸出根結(jié)點(diǎn)和權(quán)值 調(diào)用SELECT函數(shù) 計(jì)算根結(jié)點(diǎn)函數(shù) 父結(jié)點(diǎn)為兩子結(jié)點(diǎn)之和 輸出兩子結(jié)點(diǎn)和已構(gòu)造的結(jié)點(diǎn) 是否為根結(jié)點(diǎn)? 左子是否為空? 此時(shí)編碼為0 I<2*N? I++ 編碼為1 結(jié)束 否 否 否 右子是否為空 是 是 否 否 是 是 是 圖3.2 赫夫曼樹(shù)編\譯碼器流程圖 4.功能函數(shù)模塊劃分 void main() void printhead() void printree(HuffmanTree HT,int w) //打印赫夫曼樹(shù) void coprint(HuffmanTree start,HuffmanTr

9、ee HT)//打印代碼文件 void printcode() //打印代碼 void decode() //完成譯碼功能 void encode() //完成編碼功能 void inputcode() void init() void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int *w,int n) void select(HuffmanTree t,int i,int &s1,int &s2) int min(HuffmanTree t,int i)//找兩個(gè)最小的權(quán)

10、值 (四)詳細(xì)設(shè)計(jì) (1)哈夫曼編碼:首先定義函數(shù),找出全部權(quán)值中最小的兩個(gè),然后定義一個(gè)變量,使他始終成為最小的那個(gè)。再將兩個(gè)函數(shù)最為葉子結(jié)點(diǎn),并得到一個(gè)父親節(jié)點(diǎn),此父親節(jié)點(diǎn)的權(quán)值為其葉子節(jié)點(diǎn)的權(quán)值之和。并將此父親節(jié)點(diǎn)的權(quán)值與其余權(quán)值進(jìn)行比較,重新選出兩個(gè)最小的權(quán)值,再進(jìn)行上述步驟,直到所有權(quán)值形成了一顆二叉樹(shù),而此二叉樹(shù)就是我們所說(shuō)的最優(yōu)二叉樹(shù),即哈夫曼樹(shù)。 以上為哈夫曼樹(shù)的建立過(guò)程,下面為哈夫曼編碼的過(guò)程,從葉子節(jié)點(diǎn)出發(fā),若此葉子節(jié)點(diǎn)為其父親節(jié)點(diǎn)的左孩子,則將其編碼為0,若為右孩子,則將其編碼為1,然后為其父親節(jié)點(diǎn)編碼,若為祖先的左孩子,則變?yōu)?,為右孩子則為1,依次向上一層進(jìn)行遍

11、歷,直到遍歷到根節(jié)點(diǎn),停止編碼。 (2)譯碼:對(duì)于已經(jīng)建好的哈夫曼樹(shù),要對(duì)其進(jìn)行譯碼,首先從根出發(fā)如果編碼為0,則往左孩子遍歷,如果編碼為1,則往右孩子遍歷,直到遍歷到葉子節(jié)點(diǎn),便求得該子串相應(yīng)的字符。 (3)初始化哈夫曼鏈表:首先輸入結(jié)點(diǎn)個(gè)數(shù),再將字符及權(quán)值輸入,調(diào)用編碼函數(shù),得到每個(gè)字符編碼并將其輸出。最后將哈夫曼編碼寫入文件。 (4)完成編碼功能:打開(kāi)目錄下文件tobetran.txt,讀取里面的字符,對(duì)其進(jìn)行編碼后,將編碼寫入目錄下的codefile.txt中。 (5)完成譯碼功能:打開(kāi)根目錄下codefile.txt文件,讀取里面的編碼,對(duì)其中的編碼進(jìn)行譯碼,并將得到的內(nèi)

12、容寫入根目錄下的文件txtfile.txt中。 (6)打印編碼 (7)打印哈夫曼樹(shù) 四、實(shí)驗(yàn)結(jié)果 1.程序運(yùn)行環(huán)境為DOS,執(zhí)行文件為:Huffman2.exe 2 . 初始化哈夫曼鏈表(實(shí)驗(yàn)一) 在這里,有一個(gè)要注意的問(wèn)題,在程序剛開(kāi)始運(yùn)行的時(shí)候,需要先用“i”命令對(duì)哈夫曼樹(shù)進(jìn)行初始化。若不進(jìn)行初始化,則表明哈夫曼樹(shù)并未建立,這樣就無(wú)法進(jìn)行后續(xù)的調(diào)試。 3.編碼字符 4.編碼 5.譯碼 6.打印編碼 7.打印哈夫曼樹(shù) (實(shí)驗(yàn)二) 1.初始化的內(nèi)容如表所示: 字符 A B C D E F G H I J K

13、 L M 頻度 188 64 13 22 32 103 21 15 47 57 1 5 32 20 字符 N O P Q R S T U V W X Y Z 頻度 57 63 15 1 48 51 80 23 8 18 1 16 1 2.初始化 3.輸入的字符以及其對(duì)應(yīng)的編碼 4、譯碼 5. 文件textfile.txt中內(nèi)容: THIS1PROGRAM1IS1MY1FAVORIT(這里的空格字符定義為1,故出現(xiàn)此譯碼) 6.打印編碼 7.打印哈夫曼樹(shù)

14、五、實(shí)驗(yàn)結(jié)果分析 此算法的時(shí)間復(fù)雜度為:O(n),n為哈夫曼樹(shù)的結(jié)點(diǎn)個(gè)數(shù)。在對(duì)哈夫曼編碼/譯碼器算法設(shè)計(jì)過(guò)程中,主要參考了教材中對(duì)哈夫曼編碼/譯碼的算法。在實(shí)現(xiàn)的過(guò)程中遇到了一些問(wèn)題,后來(lái)參考網(wǎng)上的一些代碼,進(jìn)行與自己帶嗎的整合,將編碼/譯碼算法完成。而在對(duì)編碼以及字符進(jìn)行文件保存、打開(kāi)時(shí),也遇到了不小的問(wèn)題,很大一部分來(lái)源于對(duì)于以前C語(yǔ)言對(duì)文件操作的不熟練,所以在解決過(guò)程中,參考了一些類似的成功算法實(shí)例。 六、實(shí)驗(yàn)心得 對(duì)于本次課程設(shè)計(jì),主要是需要掌握哈夫曼樹(shù)建立、哈夫曼編碼以及哈夫曼譯碼的算法。并能將其熟練應(yīng)用于編譯碼器的完成。經(jīng)過(guò)這次的課程設(shè)計(jì),使我們更加了解了數(shù)據(jù)結(jié)構(gòu),也更深

15、入地了解了哈夫曼編碼與譯碼算法,課程設(shè)計(jì)的題目比我們平常的實(shí)驗(yàn)內(nèi)容要難,完成它不僅需要有厚實(shí)的語(yǔ)言基礎(chǔ),而且還要熟練掌握哈夫曼編碼與譯碼的算法,另外對(duì)于文件的基本操作也需要熟悉。 由于本次課程設(shè)計(jì)時(shí)間安排得比較遲,所以大部分同學(xué)都在上課之前就把實(shí)驗(yàn)做好了,由于在課外做,碰到許多問(wèn)題無(wú)法請(qǐng)教老師,但是通過(guò)上網(wǎng)找尋解決辦法,大部分的錯(cuò)誤與問(wèn)題也都能基本解決。 七、主要代碼 #include #include #include #include #include co

16、nst int UINT_MAX=1000; typedef struct //哈夫曼樹(shù)的存儲(chǔ)表示 { int weight; //權(quán)值 int parent,lchild,rchild; //父節(jié)點(diǎn),左孩子結(jié)點(diǎn),右孩子結(jié)點(diǎn) }HTNode,* HuffmanTree; //動(dòng)態(tài)分配數(shù)組存儲(chǔ)哈夫曼樹(shù) typedef char **HuffmanCode;//動(dòng)態(tài)分配數(shù)組存儲(chǔ)哈夫曼編碼表 //-----------全局變量----------------------- Huffman

17、Tree HT; //代表赫夫曼樹(shù) HuffmanCode HC; //代表赫夫曼編碼 int *w,i,j,n; char *z; int flag=0; int numb=0; // -----------------求赫夫曼編碼----------------------- void line()//畫分割線的函數(shù) { cout<<"\n---------------------------------------------

18、-----\n"; } int min(HuffmanTree t,int i)//找兩個(gè)最小的權(quán)值 { int j,flag; int k=UINT_MAX; // 取k為不小于可能的值 for(j=1;j<=i;j++) if(t[j].weight

19、---- void select(HuffmanTree t,int i,int &s1,int &s2) { int j; s1=min(t,i); s2=min(t,i); if(s1>s2)// s1為最小的兩個(gè)值中序號(hào)較小的那個(gè) { j=s1; s1=s2; s2=j; } } void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int *w,int n) { int m,i,s1,s2,start; int c,f; HuffmanTree p; char *cd;

20、 if(n<=1) return; m=2*n-1;//申請(qǐng)2n-1個(gè)內(nèi)存單元 HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode)); // 0號(hào)單元未用 for(p=HT+1,i=1;i<=n;++i,++p,++w) { p->weight=*w;//賦權(quán)值 p->parent=0; p->lchild=0; p->rchild=0; } for(;i<=m;++i,++p)//初始化 p->parent=0; for(i=n+1;i<=m;++i) // 建赫

21、夫曼樹(shù) { select(HT,i-1,s1,s2);//調(diào)用建子樹(shù)的函數(shù) HT[s1].parent=HT[s2].parent=i;//i是s1和s2的父節(jié)點(diǎn) HT[i].lchild=s1; HT[i].rchild=s2;//s1和s2是i的兒子節(jié)點(diǎn) HT[i].weight=HT[s1].weight+HT[s2].weight;//i的權(quán)值為s1和s2的和 } HC=(HuffmanCode)malloc((n+1)*sizeof(char*));//分配n個(gè)字符編碼的頭指針向量 cd=(char*)malloc(n*sizeof(c

22、har)); //分配求編碼的工作空間 cd[n-1]=\0; //編碼結(jié)束符 for(i=1;i<=n;i++)//逐個(gè)字符求哈夫曼編碼 { start=n-1; //編碼結(jié)束符位置 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));//為第i個(gè)字符編碼分配

23、空間 strcpy(HC[i],&cd[start]); //從cd復(fù)制編碼(串)到HC } free(cd);//釋放工作空間 } //--------------初始化哈夫曼鏈表--------------------------------- void init() { flag=1; int num; int num2; cout<<"下面初始化赫夫曼鏈表"<>num;//輸入結(jié)點(diǎn)個(gè)數(shù) n=num; w=(int*)malloc(n*sizeof(int));//權(quán)值

24、 z=(char*)malloc(n*sizeof(char));//字符 cout<<"\n請(qǐng)依次輸入"<

25、e(); cout<<"\n請(qǐng)依次輸入"<>num2; *(w+i)=num2; } HuffmanCoding(HT,HC,w,n);//調(diào)用哈夫曼編碼 //------------------------打印編碼---------------------- cout<<"字符對(duì)應(yīng)的編碼為:"<

26、有編碼 { puts(HC[i]); } //--------------------------將赫夫曼編碼寫入文件--------- cout<<"下面將赫夫曼編碼寫入文件"<

27、mTree,"%6d",*(w+i)); fputs(r,htmTree); } for(i=1;i<=n;i++) { fputs(HC[i],htmTree); fputs(r,htmTree); } fclose(htmTree); cout<<"已將字符與對(duì)應(yīng)編碼寫入根目錄下文件htmTree.txt中"<

28、*virttran,*tobetran; char str[100]; if((tobetran=fopen("tobetran.txt","w"))==NULL) { cout<<"不能打開(kāi)文件"<

29、 void encode() //完成編碼功能 { cout<<"下面對(duì)目錄下文件tobetran.txt中的字符進(jìn)行編碼"<

30、 tran=(char*)malloc(100*sizeof(char)); //為tran分配100個(gè)字節(jié) while(i==99) { if(fgets(tran,100,tobetran)==NULL) { cout<<"不能打開(kāi)文件"<

31、[j]); if(j>n) { cout<<"字符錯(cuò)誤,無(wú)法編碼!"<

32、完成譯碼功能 { cout<<"下面對(duì)根目錄下文件codefile.txt中的字符進(jìn)行譯碼"<

33、ength=10000; tbdc=(char*)malloc(length*sizeof(char)); //分配空間 fgets(tbdc,length,codef); outext=(char*)malloc(length*sizeof(char)); //分配空間 m=2*n-1; for(i=0;*(tbdc+i)!=\0;i++) //進(jìn)入循環(huán) { i2=*(tbdc+i); if(HT[m].lchild==0) { *(outext+io)=*(z+m-1); io++; m=2*n-1; i--;

34、 } else if(i2==0) m=HT[m].lchild; else if(i2==1) m=HT[m].rchild; } *(outext+io)=\0; fputs(outext,txtfile); cout<<"譯碼完成"<

35、 void printcode() //打印代碼 { cout<<"下面打印根目錄下文件CodePrin.txt中編碼字符"<

36、efile.txt","r"))==NULL) { cout<<"不能打開(kāi)文件"<

37、); cout<<"打印工作結(jié)束"<

38、量為已被聲明為全局變量 coprint(HT+start->rchild,HT); if(start->lchild!=NULL&&start->rchild!=NULL) t=<; cout<weight<weight); coprint(HT+start->lchild,HT); numb--; fclose(TreePrint); } } void printree(HuffmanTree HT,int w) //打印赫夫曼

39、樹(shù) { HuffmanTree p; p=HT+w; cout<<"下面打印赫夫曼樹(shù)"<

40、<"  e.編 碼   d.譯 碼   \n\t\t"; cout<<"   p.打印編碼     t.打印赫夫曼樹(shù)    \n\t\t"; cout<<"   q.退 出       \n\t\t"; if(flag==0)cout<<"\n請(qǐng)先初始化赫夫曼鏈表,輸入i\n"; cout<<"請(qǐng)選擇你要進(jìn)行的操作:"; } /*2.主程序*/ void main() { char choice; while(choice!=q) {

41、 printhead(); cin>>choice; switch(choice) { case i: //按下i則進(jìn)行初始化赫夫曼鏈表,調(diào)用init函數(shù) init(); break; case w: //按下w編碼字符,調(diào)用inputcode函數(shù) inputcode(); break; case e: //按下e編碼,調(diào)用encode函數(shù) encode(); break; case d: //按下d譯碼,調(diào)用decode函

42、數(shù) decode(); break; case p: //按下p打印編碼,調(diào)用printcode函數(shù) printcode(); break; case t: //按下t打印赫夫曼樹(shù),調(diào)用printree函數(shù) printree(HT,2*n-1); break; case q: //按下q退出 break; default: cout<<"輸入錯(cuò)誤,請(qǐng)重新選擇"<

展開(kāi)閱讀全文
溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!