电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

哈夫曼编码解码报告

哈夫曼编码解码报告_第1页
1/12
哈夫曼编码解码报告_第2页
2/12
哈夫曼编码解码报告_第3页
3/12
目 录 一、设计思想……………………………………………………….0 2 二、算法流程图…………………………………………………….0 3 三、源代码………………………………………………………….0 3 四、运行结果……………………………………………………….0 9 五、遇到的问题及解决…………………………………………….1 1 六、心得体会……………………………………………………….1 2 哈夫曼编码与解码的实现 - 1 - 一、设计思想 哈夫曼的编码与解码: 读取 tx t 文件,统计所得到的文件中每个字母的权值,创建哈夫曼树,哈夫曼编码。哈夫曼解码,解码后内容写入到指定的 tx t 文件,让用户选择不同的操作。 读取 tx t 文件,里面的内容是由英文单词组成。读取文件的时候传入文件存放的路径、读取方式以及读出以后存放的数组,最终可以得到一个存放目标文件内容的数组。 将得到的数组进行字母权值的统计,统计每个字母出现的次数,次数即为每个字母的权值,在这个函数里面统计 26 个字母在目标文件中出现的次数,并且统计“逗号”、“句号”和“空格”的出现次数。使用的方法:每次从数组中取出一个字符,将字母的 ASCII 值与字母“a”相减,得到一个小于 26 的数,将存放权值数组的对应位置进行 ++ 运算,特殊的三个符号另作统计,如此可以得到目标文件中每个字母出现的次数。然后将字母出现次数为零的字母去掉重新组成一个字符数组,在配上对应的权值数组,统计完成后将字符数组与权值数组作为结果返回。 将得到的字符数组与权值数组作为创建哈夫曼树的依据,哈夫曼树根据每个字母权值的大小来创建,每个节点,包括权值、状态(是否已经在哈夫曼树上,0 代表不再哈夫曼树上,1 代表在哈夫曼树上)、父节点、左子、右子和字母本身。假设有n 个字母,也即是叶子节点,哈夫曼树上的节点应该为 2*n – 1 个。前面的 n 个节点都有相应的字母,后面生成的 n-1个节点是没有相应的字母的,用空字符替代。对每个节点进行初始化。初始化完成以后,开始创建哈夫曼树,每次选取两个权值最小的叶子节点组成一个新的节点,新的节点的左子设置为上面两个权值小的那个节点,右子为上面权值大的那个节点,权值为上面两个节点的权值的和,将上述选取出来的叶子节点标位设置为 1,父节点为新创建出来的节点。将新的节点存放到原有的节点数组上,将已用过的节点从节点数组上去除。重复执行上述操作直到只剩下...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

哈夫曼编码解码报告

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部