1、_ 目目 录录 课程设计任务书课程设计任务书 I 第一节第一节 需求分析需求分析 1 1.1 引 言. 1 1.2 任务概述 1 1.3 数据描述 2 第二章第二章 设计概要设计概要 3 2.1 总体设计 3 2.2 数据类型. 4 第三章第三章 详细设计详细设计 6 3.1 主函数. 6 3.2 存储表示. 6 3.3 赫夫曼树的算法. 7 3.5 赫夫曼译码的算法. 10 3.6 显示界面源程序. 12 第四章第四章 测试及运行测试及运行 14 4.1 运行结果. 14 4.2 测试分析 16 第五章第五章 总总 结结 . 17 5.1 心得体会 . 17 5.2 参考文献 . 17 附录
2、:程序代码附录:程序代码 . 18 _ I 课程设计任务书课程设计任务书 课程名称 数据结构课程设计 设计题目 Huffman 编码和译码 指导教师 时间 2013.5.202013.5.30 一、教学要求 1. 掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力 2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能 3. 提高综合运用所学的理论知识和方法独立分析和解决问题的能力 4. 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和 作风 二、设计资料及参数 每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题
3、目选定后不可更换。 Huffman 编码和译码 根据给定的字符集和各字符的频率值,求出其中给定字符 Huffman 编码,并针对一段文本(定 义在该字符集上)进行编码和译码,实现一个 Huffman 编码/译码系统。 要求设计类(或类模板)来描述 Huffman 树及其操作,包含必要的构造函数和析构函数,以及 其他能够完成如下功能的成员函数: 求 Huffman 编码 输入字符串,求出编码 输入一段编码,实现译码 并设计主函数测试该类。 三、设计要求及成果 1. 分析课程设计题目的要求 2. 写出详细设计说明 3. 编写程序代码,调试程序使其能正确运行 4. 设计完成的软件要便于操作和使用 5
4、. 设计完成后提交课程设计报告 四、进度安排 资料查阅与讨论(1 天) 系统分析(2 天) 系统的开发与测试(5 天) 编写课程设计说明书和验收(2 天) 五、评分标准 1. 根据平时上机考勤、表现和进度,教师将每天点名和检查 2. 根据课程设计完成情况,必须有可运行的软件。 3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。 4. 根据答辩的情况,应能够以清晰的思路和准确、简练的语言叙述自己的设计和回答教师的提问 六、建议参考资料 1 数据结构 (C 语言版) 严蔚敏、吴伟民 主编 清华大学出版社 2004.11 2 数据结构课程设计案例精编(用 C/C+描述) ,李建
5、学 等 编著,清华大学出版社 2007.2 3.数据结构:用面向对象方法与 C+语言描述 ,殷人昆 主编, 清华大学出版社 2007 _ 1 第一节第一节 需求分析需求分析 1.11.1 引引 言言 在当今信息爆炸时代, 如何采用有效的数据压缩技术节省数据文件的存 储空间和计算机网络的传送时间已越来越引起人们的重视, 赫夫曼编码正是 一种应用广泛且非常有效的数据压缩技术。Huffman 编码是一种编码方式, 以 Huffman 树即最优二叉树,带权路径长度最小的二叉树,经常应用于数 据压缩。哈弗曼编码使用一张特殊的编码表将源字符(例如某文件中的一个 符号)进行编码。这张编码表的特殊之处在于,它是根据每一个源字符出现 的估算概率而建立起来的(出现概率高的字符使用较短的编码,反之出现概 率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低, 从而达到无损压缩数据的目的) 。赫夫曼编码的应用很广泛,利用赫夫曼树 求得的用于通信的二进制编码称为赫夫曼编码。 树中从根到每个叶子都有一 条路径,对路径上的各分支约定:指向左子树的分支表示“0”码,指向右 子树的分支表示“1”码,取每条路径上的“0”或“1”的序列作为和各个 叶子对应的字符的编码,这就是 Huffman 编码。Huffman 译码输入字符串可 以把它编译成二进制代码