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

用哈夫曼编码实现文件压缩课案

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

N 开始 判断当前结点是否有孩子结点 YouBiao<<1,sDepth++ Y 向其左结点 当前结点是否有 左孩子结点点 Y N 当前结点是否有 右孩子结点 Y youBiao,sDepth与结 N 点返回其父结点 Y 当前结点是否有 父结点 youBiao为Haffman N 编码值即 当前结点的左右 N 孩子是否都已访 Y youBiao<<1丨0x01,sDepth++;结点指向其右

文件的压缩编码成功 (3)“输出”部分是最重要的部分,也是最易出错的部分。每个字符要能合理的结束。这主要是为解压缩考虑的,比如在最后,这里涉及到C语言的位操作,要求这个算法能处理好以下几个问题:

1)每个字符所对应的haffCode的比特位长度由5~23位不等长,不可少输, 多输,输错任何一位,后一个字符的haffCode要紧跟在前一个字符的haffCode后面。

2)最后一个要输出的haffCode的最后一位,它恰好是位于最后一个有效字符的第一位,剩下的七个空位是要用无效的haffCode加以填充的。否则,如果填充的haffCode亦为某个ascii字符的haffCode时,那么在解压缩时,则该在原被压缩文件中不存在的字符便会无中生有的在解压后的文件中出现,这显然是不正确的,应在程序中加以处理。 当文件不为空时 N Y count = 0 N count<8 Y 当前的一个字符对应 的Y haffCode已输出完毕 读入被压缩文件的下一个字符,得到其 haffCode,设为 curCode,如是最后一 N 个字符,则做相应y的处理 Count++ 将curCode中的当前位赋值给输 出字符左起的第count个位置 输出字符到压缩文件

(4)main 函数部分

开始

是否成功输入 N 要打开文件

名称

Y

N 是否找到

key.txt文件

Y 将 key 文件中的值作为叶 子结点构建 haffman树

实现 haffman 编码

输 出 ASCII 码 对 应 的 haffman 编码及其长度 返回 输出字符到 压缩文件 文件压缩结束,关闭打开的 文件

七、测试结果及分析: 运行结果:

压缩情况:

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