文档介绍:《数据结构与算法分析》课程设计报告课题名称:哈夫曼编码课题设计人(学号):胡宗鹏 指导教师:朱宏 评阅成绩: 评阅意见: 提交报告时间:2010年12月14日哈夫曼编码计算机科学与技术专业学生胡宗鹏指导老师朱宏[摘要]通信中,可以采用0,1的不同排列来表示不同的字符,称为二进制编码。而哈夫曼树在数据编码中的应用,是数据的最小冗余编码问题,它是数据压缩学的基础。若每个字符出现的频率相同,则可以采用等长的二进制编码,若频率不同,则可以采用不等长的二进编码,频率较大的采用位数较少的编码,频率较小的字符采用位数较多的编码,这样可以使字符的整体编码长度最小,这就是最小冗余编码的问题。而哈夫曼编码就是一种不等长的二进制编码,且哈夫曼树是一种最优二叉树,它的编码也是一种最优编码,在哈夫曼树中,规定往左编码为0,往右编码为1,则得到叶子结点编码为从根结点到叶子结点中所有路径中0和1的顺序排列。关键词:哈夫曼树课程设计目的1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。、系统设计、程序编码、测试等基本方法和技能;;,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。课程设计任务与要求:哈夫曼树应用功能:(1)从终端读入字符集大小n,以及n个字符和n个权值,(比如树)显示在终端上;(2)利用已经建好的哈夫曼树(如不在内存,则从文件htmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中,并输出结果,将文件CodeFile以紧凑格式先是在终端上,每行50个代码。同时将此字符形式的编码文件写入文件CodePrint中。(3)利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中,并输出结果。分步实施:初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;完成最低要求:完成功能1;进一步要求:完成功能2和3。有兴趣的同学可以自己扩充系统功能。要求:1)界面友好,函数功能要划分好2)总体设计应画一流程图3)程序要加必要的注释要提供程序测试方案程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。: 经过几个星期的奋战,终于完成了课程设计,感觉又进一步了解了数据库这门课程,各个知识点都加强了。也许个中滋味只有我才能体会,说实在的,刚上这门课程的时候,兴趣并不是很大,而且还出现过作业迟交的情况,而现在,我似乎突然找到了方向,认真的学习这门课。回顾这次课程设计,使我感慨颇多。的确,从理论到实践,在整整两星期的日子里,学到很多很多的的东西,同时不仅可以巩固学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,从而提高自己的实际动手编程能力和独立思考的能力。运动会计分系统,比较复杂,经过很长时间的书写,总算尝到了胜利的“滋味”在细节的认识上,我们在开发程序的时候,在之前就要知道自己想要的效果,然后把需要实现的功能在纸上列出来,后比如要用几个函数来实现几个功能,整体需要几个模块来搭建,这些工作都是要在未动工之前就得做好的准备工作,编程要的是有整体的思想加细心。这次的课程设计收获颇多,最大的认识到了要想高效设计出想要的东西不仅要熟悉的掌握所学知识,还要学会充分利用现有资源。在这之前,总以为自己编程方面还很差,现在才觉得,只要努力了,就会有收获,就会得到回报参考文献百度文库哈夫曼函数详细设计(源程序)哈弗曼函数 #include<> #include<> #include<> #include<> charfilename[20];//文件名 FILE*fp;//指向文件的指针 //定义结构体 typedefstruct { intweight; charch; intparent,lchild,rchild; }HTNode,*HuffmanTree; //动态分配数组存储哈夫曼树 typedefstruct { charch; char*chs; }HuffmanCode;//动态分配数组存储哈夫曼编码表 typedefstruct { charch; intweight; }sw;//定义节点 typedefstruct { H