哈夫曼编码译码器实验报告.doc

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告 哈夫曼编码及译码? ? 班级:软件工程一班 学号:2220141524 姓名:孙正涛 1 问题描述 设计一个利用哈夫曼算法的编码和译码系统,重复地显示并处理以下项目,直到选择退出为止。?将权值数据存放在数据文件(文件名为data.txt,位于当前目录中)?分别采用动态和静态存储结构; 初始化:键盘输入字符集大小n、n个字符和n个权值,建立哈夫曼树; ?编码:利用建好的哈夫曼树生成哈夫曼编码;输出编码;一个利用哈夫曼算法的编码和译码系统 4 详细设计 数据类型的定义 (1)哈夫曼树节点类型 struct hufmtreenode{ //哈弗曼树结点数据类型 char data; float weight; //结点权值 int parent,lchild,rchild; //父结点,左、右孩子结点 }; (2)哈夫曼树类型 struct hufmtree{ //哈弗曼树数据类型 hufmtreenode *node; //结点数组(根据n的值动态分配) int n; //叶子结点数 }; (3)哈夫曼编码数据类型 struct Codetype{ //哈弗曼编码数据类型 char *bits; //编码流数组, int start;//编码实际在编码流数组里的开始位置 } 5 测试分析 (1)打开源文件统计各字符及权值信息并存入data.txt文件中 (2)将统计出的权值信息进行哈夫曼编码 将编码内容存入CodeFile.txt文件中 将CodeFile.txt文件中的内容译码 成功译码把原字符信息存入DeCodeFile.txt文件中 (6)输入各字符及其权值 将各字符的权值信息进行哈夫曼编码 根据编码再进行译码工作 6 课程设计总结 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。 回顾起此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在谢老师的辛勤指导下,终于游逆而解。同时,在李玉蓉老师的《软件工程导论》课上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢! 附录(源程序清单) #include stdio.h #include conio.h #include stdlib.h #define MAXVAL 10000.0 struct hufmtreenode{//哈弗曼树结点数据类型 char data; double weight;//结点权值 int parent,lchild,rchild;//父结点,左、右孩子结点 }; struct hufmtree{//哈弗曼树数据类型 hufmtreenode *node;//结点数组(根据n的值动态分配) int n;//叶子结点数 }; struct Codetype{//哈弗曼编码数据类型 char *bits;//编码流数组,n为为哈夫曼树中叶子结点的数目,编码的长度不可能超过n int start;//编码实际在编码流数组里的开始位置 }; void SortHufmtree(hufmtree *tree){//将哈夫曼树n个叶子结点由大到小排序 int i,j,k; hufmtreenode temp; if (tree==NULL)

文档评论(0)

光光文挡 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档