数据结构哈夫曼编码译码器课程设计报告分析.doc
文本预览下载声明
JAVA语言 实验报告
学 院 计算机工程学院 班 级 计算1013
姓 名 佐伊伦 学 号 201081xxxx
成 绩 指导老师 xxxx
2012年09月03日
目 录
目录 1
1 课程设计的目的和意义 2
2 需求分析 3
3 系统(项目)设计 5
①设计思路及方案………………………………………………5
②模块的设计及介绍……………………………………………5
③主要模块程序流程图…………………………………………8
4 系统实现 11
①主调函数…………..…………………………..……………..12
②建立HuffmanTree……………………………………………12
③生成Huffman编码并写入文件……………………………..15
④电文译码……………………………………………………..16
5 系统调试 17
参考文献 20
附录 源程序 21
1 课程设计的目的和意义
在当今信息爆炸时代,如何采用有效的数据压缩技术来节省数据文件的存储空间和计算机网络的传送时间已越来越引起人们的重视。哈夫曼编码正是一种应用广泛且非常有效的数据压缩技术。
哈夫曼编码的应用很广泛,利用哈夫曼树求得的用于通信的二进制编码称为哈夫曼编码。树中从根到每个叶子都有一条路径,对路径上的各分支约定:指向左子树的分支表示“0”码,指向右子树的分支表示“1”码,取每条路径上的“0”或“1”的序列作为和各个对应的字符的编码,这就是哈夫曼编码。
通常我们把数据压缩的过程称为编码,解压缩的过程称为解码。电报通信是传递文字的二进制码形式的字符串。但在信息传递时,总希望总长度尽可能最短,即采用最短码。
作为信息管理专业的学生,我们应该很好的掌握这门技术。在课堂上,我们能过学到许多的理论知识,但我们很少有过自己动手实践的机会!课程设计就是为解决这个问题提供了一个平台。
在课程设计过程中,我们每个人选择一个课题,认真研究,根据课堂讲授内容,消化课堂所讲解的内容;通过积累调试C程序的经验逐渐培养的编程能力、用计算机解决实际问题的能力。ChuffmanTree()函数构建哈夫曼树;并调用print1()和print2()函数将哈夫曼的存储结构的初态和终态进行输出。然后调用HuffmanEncoding()函数对哈夫曼树进行编码,调用coding()函数将编码写入文件;再调用decode()对编码进行译码,再输出至界面。至此,整个工作就完成了。
测试数据:例如从文本中读到文章为:IAMASTUDENT。
则效果如下:
IAMASTUDENT
--------------------------------------
HuffmanTree的初态:
2 0 0 0
1 0 0 0
1 0 0 0
1 0 0 0
1 0 0 0
1 0 0 0
1 0 0 0
2 0 0 0
1 0 0 0
- 0 0 0
- 0 0 0
- 0 0 0
- 0 0 0
- 0 0 0
- 0 0 0
- 0 0 0
- 0 0 0
--------------------------------------
字符A次数:2
字符D次数:1
字符E次数:1
字符I 次数:1
字符M次数:1
字符N 次数:1
字符S 次数:1
字符T次数:2
字符U次数:1
--------------------------------------
HuffmanTree的终态:
2 13 0 0
1 10 0 0
1 10 0 0
1 11 0 0
1
显示全部