【正文】
教師:王亞寧 設(shè)計時間: 昆明學(xué)院昆明學(xué)院課程設(shè)計(大作業(yè))任務(wù)書姓 名:郭彩丁 院 系:信息技術(shù)學(xué)院專 業(yè):計算機(jī)科學(xué)與技術(shù)專業(yè) 學(xué) 號:201011010205 任務(wù)起止日期: 課程設(shè)計題目:哈夫曼編碼器 課程設(shè)計要求:(1)初始化:鍵盤輸入n個字符和n個權(quán)值,建立哈夫曼樹(2)編碼:利用建好的huffman樹生成huffman編碼(3)輸出編碼(4)字符和頻度如下: ① 字符:空格 A B C D E F G H I J K L M N O P Q 頻度:186 64 13 22 32 103 21 15 47 57 1 2 32 20 57 63 15 1② 字符:R S T U V W X Y Z 頻度:48 51 80 23 8 18 1 16工作計劃及安排(1)在上機(jī)之前選題(2)選擇合適的數(shù)據(jù)結(jié)構(gòu)(3)結(jié)點結(jié)構(gòu)的設(shè)計(4)算法設(shè)計與分析(5)程序設(shè)計、實現(xiàn)、調(diào)試(6)提交課程設(shè)計報告指導(dǎo)教師簽字 年 月 日 課程設(shè)計(大作業(yè))成績學(xué)號:201011010205 姓名:郭彩丁 指導(dǎo)教師:王亞寧 老師課程設(shè)計題目: 哈夫曼編碼器 總結(jié): 通過此次的課程設(shè)計使我認(rèn)識了哈夫曼樹的建立與應(yīng)用,復(fù)習(xí)了數(shù)據(jù)結(jié)構(gòu)中的樹的存儲結(jié)構(gòu),怎樣構(gòu)造哈夫曼樹以及用哈夫曼樹進(jìn)行編碼。學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)能使我們?yōu)槠渌n程打好基礎(chǔ),而課程設(shè)計作為數(shù)據(jù)結(jié)構(gòu)中一個重要環(huán)節(jié)能更好的使我們加深對它的了解。以字符的頻度為權(quán)值,建立哈夫曼樹,求哈夫曼編碼。typedef struct {int weight。 /*左、右孩子及雙親的下標(biāo)*/}htnode。 /* huffmantree是結(jié)構(gòu)數(shù)組類型,其0號單元不用,存儲哈夫曼樹 */typedef struct{char ch。 /*存放編碼位串*/}codenode。 /*huffmancode是結(jié)構(gòu)數(shù)組類型,其0號單元不用,存儲哈夫曼編碼*/功能模塊劃分void main() //主函數(shù)void inithuffmantree(huffmantree ht) //初始化哈夫曼樹函數(shù)inithuffmantree()void inputweight(huffmantree ht) //輸入權(quán)值函數(shù) void selectmin(huffmantree ht, int i, int *p1, int *p2)void createhuffmantree(huffmantree ht) //構(gòu)造huffman樹,