下载此文档

哈夫曼树的构造和应用.doc


文档分类:IT计算机 | 页数:约10页 举报非法文档有奖
1/10
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/10 下载此文档
文档列表 文档介绍
《计算机软件技术基础》实验报告
实验名称:实验三哈夫曼树的应用和实现
实验目的:掌握哈夫曼树的基本构造,并能运用哈夫曼树实现前缀编码。
实验内容:完成下述功能:
(1)根据输入的字符和相应的权重建立哈夫曼树,并输出已经建立的相应内容作为检查;
(2)运用哈夫曼树实现前缀编码,并输出各字符的编码串;
(3)输入一组二进制报文,进行译码,并输出译文。
实验要求:
(1) 数据元素为字符,其相应的权值为float;
(2)对实验内容进行算法设计,将编制的程序输入计算机,编译运行;
(3)程序的实际功能与上述所列功能不完全相符,调试程序,找出问题所在,并纠正。
(4)以教材中P162的例为数据,验证结果,并给出相应的说明。
实验原理:哈夫曼树的构造和应用(流程图)。
1,建立哈夫曼树
,2,构建哈夫曼编码表
,3,译码过程是编码的逆过程,算法流程图此处省略。
编译环境:PC中C++
实验调试及分析处理:
1,实验调试过程中出现以下错误:
分析处理:程序运行出现上述错误,调试很久后发现,此问题主要是在调用译码函数时出错,原因是译码函数与主函数之间数据传递出现问题,修改后问题得到解决。
2,实验调试过程中出现以下错误:
分析处理:程序运行出现上述错误,明显与书本上的例题运行结果不一致,程序也没发现什么大的错误,与同学讨论后发现原因,if(ht[j].parent==0&&m1>ht[j].weight)
{m2=m1;k2=k1;
m1=ht[j].weight;k1=j;
}
else
if(ht[j].parent==0&&m2>ht[j].weight)
这段程序应该改成if(ht[j].parent==0&&(m1-ht[j].weight)>=)
{m2=m1;k2=k1;
m1=ht[j].weight;k1=j;
}
else
if(ht[j].parent==0&&(m2-ht[j].weight)>=)。改完以后运行结果与课本一致。
3,实验调试过程中出现以下错误:
分析处理:程序运行中出现错误,主要是未理解scanf函数的应用,输入时若是一串二进制数字相邻输入,会当成一个数字读入,导致出错,修改输入方式后,再次运行这个错误消除。
实验结果:
1,哈夫曼树的构造,并输出已经建立的相应内容作为检查;
2,运用哈夫曼树实现前缀编码,并输出各字符的编码串
3. 输入一组二进制报文,进行译码,并输出译文。
实验结果分析及总结
这次实验的收获主要是对哈夫曼树的结构有了更深入的理解,以及利用哈夫曼树的前缀编码,这是本课程的重点,应该注重学****本次实验结果基本正确,能完全实现实验要求的功能,但也存在不足的地方,如运行界面不美观,程序语句不精练,有些地方可以更加简单等等。这些都需要我在以后的实验中着重注意并加以学****另外,这次实验编程个人所花时间较长,这说明我对知识点不够熟悉,掌握程度不够,在今后的学****中应该更加严谨,虚心向同学学****不懂的地方应该先自己理解再交流。
参考资料:《计算机软件技术基础教程》,刘彦明;《C语言设计》。
附:实验三哈夫曼树的应用和实现源程序。
#include""
#

哈夫曼树的构造和应用 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数10
  • 收藏数0 收藏
  • 顶次数0
  • 上传人zbfc1172
  • 文件大小322 KB
  • 时间2018-09-14