哈夫曼编译码器课程设计报告

.

学号 1508 2015-2016学年 第1学期

教育资料

《数据结构》 课程设计报告 题目: 哈夫曼编/译码器

专业: 计算机科学与技术(对口) 班级: 13(3) 姓名: 陈霞 指导教师: 彭飞 成绩:

计算机学院 2015年11月12日

计算机学院 《数据结构》课程设计报告

目录

1 设计内容及要求 .................................... 3 1.1 内容 .......................................... 3 1.2 要求 .......................................... 3 2 概要设计 .......................................... 4 2.1 抽象数据类型定义 .............................. 4 2.2 模块划分 ...................................... 4 3 设计过程及代码 .................................... 5 3.1 设计过程 ...................................... 5 3.2 代码 .......................................... 8 4 设计结果与分析 ................................... 11 5 参考文献 ......................................... 13

1

计算机学院 《数据结构》课程设计报告

1 设计内容及要求

1.1 内容

利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼编/译码系统。

1.2 要求

一个完整的系统应具有以下功能:

(1)I:初始化(Initialization)。从终端读入字符集大小n,以及n个字符和 n个权值,建立哈夫曼树,并将它存于文件hfmTree中。

(2)E:编码(Encoding)。利用已建好的哈夫曼树(如不在内存,则从文件 htmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中。

(3)D:译码(Decoding)。利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。

(4)P:印代码文件(Print)。将文件CodeFile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码写入文件CodePrint中。

(5)T:印哈夫曼树(Tree Printing)。将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中。

[测试数据]

(1)数据一:已知某系统在通信联络中只可能出现8种字符,其概率分别为 0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11,以此设计哈夫曼编码。利用此数据对程序 进行调试。

(2)用下表给出的字符集和频度的实际统计数据建立哈夫曼树,并实现以下报文的编码和译码:“ THIS PROGRAM IS MY FAVORITE”。

字符 频度 字符 频度 A B 13 P 15 C 22 Q 1 D 32 R 48 E F G 15 U 23 H 47 V 8 I 57 W 18 J 1 X 1 K 5 Y 16 L 32 Z 1 M 20 186 64 N 57 O 63 103 21 S 51 T 80 1

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4