1、 数据结构数据结构 课程设计课程设计 赫夫曼编码赫夫曼编码/ /译码器译码器设计设计 1 数据结构数据结构课程设计课程设计实验报告实验报告 一、题目:一、题目: 赫夫曼编码/译码器设计 二、目的:二、目的: 1、提高分析问题、解决问题的能力,进一步巩固数据结构各种原理与方法。 2、熟悉掌握一门计算机语言,可以进行数据算法的设计。 三、要求要求 3.13.1 总体要求总体要求 1、要充分认识课程设计对培养自己的重要性,认真做好设计前的各项准备工作。尤其是对编程 软件的使用有基本的认识。 2、既要虚心接受老师的指导,又要充分发挥主观能动性。结合课题,独立思考,努力钻研,勤 于实践,勇于创新。 3、
2、独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。 4、在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、按质、按 量完成课程设计。 3.23.2 实施要求实施要求 1、理解赫夫曼编码/译码的确切意义。 2、独立进行方案的制定,系统结构设计要合理。 3、在程序开发时,则必须清楚主要实现函数的目的和作用,需要在程序书写时说明做适当的注 释。在写课设报告时,必须要将主要函数的功能和参数做详细的说明。 4、通过多组数据来检测该系统的稳定性和正确性。 3.33.3 课程设计报告的内容及要求课程设计报告的内容及要求 在完成课题验收后,学生应在规定的时间
3、内完成课程设计报告一份(不少于 2000 字) 。 1 一、实验目的一、实验目的 1 进一步掌握最优二叉树的含义。 2 掌握最优二叉树的结构特征,以及各种存储结构的特点及使用范围。 3 熟练掌握哈夫曼树的建立和哈夫曼编码方法。 4 掌握用指针类型描述、访问和处理运算。 二、二、实验原理实验原理 哈夫曼(Huffman)编码属于码词长度可变的编码类,是哈夫曼在 1952 年提 出的一种编码方法,即从下到上的编码方法。同其他码词长度可变的编码一样, 可区别的不同码词的生成是基于不同符号出现的不同概率。 生成哈夫曼编码算法 基于一种称为“编码树” (coding tree)的技术。算法步骤如下: (
4、1)初始化,根据符号概率的大小按由大到小顺序对符号进行排序。 (2)把概率最小的两个符号组成一个新符号(节点) ,即新符号的概率等于这两 个符号概率之和。 (3)重复第 2 步,直到形成一个符号为止(树) ,其概率最后等于 1。 (4)从编码树的根开始回溯到原始的符号,并将每一下分枝赋值为 1,上分枝 赋值为 0。 译码的过程是分解电文中字符串,从根出发,按字符“0”或“1”确定找做 孩子或右孩子,直至叶子节点,便求得该子串相应的字符。 三、三、实验内容实验内容 (一)需求分析(一)需求分析 一个完整的系统应具有以下功能: (1) I:初始化。从终端读入字符集大小 n,以及 n 个字符和 n 个权值,建立哈 夫曼树,并将它存于文件 hfmTree 中。 (2) E:编码。利用已建好的哈夫曼树,对文件 ToBeTran 中的正文进行编码,然 后将结果存入文件 CodeFile 中。 (3) D:译码。利用已建好的哈夫曼树将文件 CodeFile 中的代码进行译码,结果 存入文件 Textfile 中。 (4) P:印代码文件(Print).将文