第一范文网 - 专业文章范例文档资料分享平台

数据结构课程设计-赫夫曼编码

来源:用户分享 时间:2025/8/31 0:48:12 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

3、译码

21

时间复杂度:

min(HfmTeee &t,int x) O(n) CreateHfmTree(HfmTeee H,HuffCode code,int leaves) O(n) Decoding(HfmTeee h,HuffCode code,int leaves) O(n) Encoding(HfmTeee H,HuffCode code,int leaves) O(n)

Print() O(1)

调试分析:

1、写完运行,有很多细节错误。 解决方法:

根据错误提示依次修正。

2、第一次成功运行,因为有字符的输入,没有注意,导致在建树的时候,第一个字符变成了回车符。 解决方法:

在输入n之后补加了一句getchar();语句以解决错误。

3、运行时,提示警告n,h,code未初始化。 解决方法:

对n初始化为0,h,code为NULL。

4、从文件中读入时出现错误,以及对code和h的申请动态有误。

22

问题解决:

因为通过”>>”文件读取时,以空格作为结束符,因此,通过get读取,iFile.get(ch)读取时可以读取所以字符,包括空格和换行符,因此,iFile.get(ch)要运行两次,第一次,目的是接受换行符,第二次,接收的才是相应的字符。

5、运行时提示错误:无法写入! 问题解决:

设定断点后找到,在编码、译码函数中,在从文件中读取哈夫曼码时,二阶字符指针code只进行了依次申请二维数组空间,将代码复制给code[i]时,未对code[i]进行申请动态。code[i]=(char*)malloc((l+1)*sizeof(char));

六、总结

首先要说的是,题意的不明确,或者说是不合理:

“在程序的一次执行过程中,第一次执行I,D或C命令之后,赫夫曼树已经在内存了,不必再读入。每次执行中不一定执行I命令,因为文件hfmTree可能早

已建好。”

此句话有歧义。

本次课程设计,主要是为了熟悉对哈夫曼树的建立以及哈夫曼码的使用,在建树的时候,可以通过构建一个节点:

typedef struct { char ch; int parent; int lchild; int rchild; int weight; }HtNode,*HfmTeee;

以存储树节点的信息,在通过一个二阶字符指针: typedef char **HuffCode; 来存储经过编译后的代码。

我在写的时候,刚开始考虑到I:初始化 操作每次运行exe时,可能不一定运行,可以从hfmTree文件中读入个字符的哈夫曼码值,因此在定义结构体数组的时候,打算把 HfmTeee H;H[0].weight用来存储n,从而在从hfmTree文件中读取的时候,可以得到字符的数目n,以申请相应的数组空间。因此,H的存储,从H[1]开始!从文件中读取字符的哈夫曼码值的时候,要注意空格字符的读取要用get(c)函数,同时注意接收换行符’\\n’。

23

在初始化的时候,本来是按书上写的,但是后来发现,书上的不是很简便,会对前n个节点重复初始化操作,因此先输入n个字符的信息,然后再对剩下n+1到2*n-1的节点进行初始化。

在输入字符时,不能使用cin输入,因为cin是不能接收空格的,必须用scanf。 对哈夫曼树的打印,首先我想到的是建立一个大的字符数组tree[10000][10000],根据每个字符的哈夫曼码值来确定相应字符的位置,例如111对应的位置是tree[3][7];但是这样虽然很简单,却容易暴栈,当树深超过15时便会暴栈。

其实很多细节,只有在去写的时候才会发现,才会暴露出来,书本上的知识是很少的,很多东西,要靠自己平时多去练习,在练习中产生错误,通过上网查找等途径解决错误,以增长自己的知识点和调试能力。

程序这种东西,就是写出来就感觉很简单,想着也不能,但是实现的时候,有时候会有这里那里的小错误阻碍程序的正确运行,很多时候,与其说是写程序不如说是对细节的检测。

24

搜索更多关于: 数据结构课程设计-赫夫曼编码 的文档
数据结构课程设计-赫夫曼编码.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1v18j5mzye5a66i6tl25_6.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top