内容发布更新时间 : 2024/11/15 19:26:12星期一 下面是文章的全部内容请认真阅读。
.
学号 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