- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)
您可能关注的文档
- 规范保安服务市场,促进“平安北京”建设的思考 2013-01-11.doc
- 贵黄公路工程施工桥面表格(第二册).doc
- 贵阳市建设工程竣工档案归档范围(最新).doc
- 贵州省2015年公务员考试行测真题.doc
- 贵州省凯里市第一中学2016届高三数学一轮总复习 专题十六 算法、复数、推理与证明(含解析).doc
- 贵州省普通话考试朗读作品大全(注音版).doc
- 贵州最大的彝族仿古建筑——贵州宣慰府.doc
- 滚滚长 江(两课时).doc
- 锅炉安装全套表格(很好).doc
- 锅炉低负荷断油稳燃调试方案.doc
- 半导体材料性能提升技术突破与应用案例分析报告.docx
- 半导体设备国产化政策支持下的关键技术突破与应用前景报告.docx
- 剧本杀市场2025年区域扩张策略研究报告.docx
- 剧本杀行业2025人才培训体系构建中的市场需求与供给分析.docx
- 剧本杀行业2025年人才培训行业人才培养模式创新与探索.docx
- 剧本杀行业2025年内容创作人才需求报告.docx
- 剧本杀行业2025年区域市场区域剧本市场消费者满意度与市场竞争力研究报告.docx
- 剧本杀市场2025年区域竞争态势下的区域合作策略分析报告.docx
- 剧本杀行业2025人才培训与行业人才培养模式创新.docx
- 剧本杀行业剧本创作人才心理素质培养报告.docx
文档评论(0)