哈夫曼解码编码实现
Posted linanlalala
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了哈夫曼解码编码实现相关的知识,希望对你有一定的参考价值。
20172323 2018-2019-1 《程序设计与数据结构》课堂测试报告
课程:《程序设计与数据结构》
班级: 1723
姓名: 李楠
学号: 20172330
实验教师:王志强老师
测试日期:2018年12月10日
必修/选修: 必修
1.测试内容
哈夫曼编码测试
设有字符集:S={a,b,c,d,e,f,g,h,i,j,k,l,m,n.o.p.q,r,s,t,u,v,w,x,y,z}。
给定一个包含26个英文字母的文件,统计每个字符出现的概率,根据计算的概率构造一颗哈夫曼树。
并完成对英文文件的编码和解码。
要求:
(1)准备一个包含26个英文字母的英文文件(可以不包含标点符号等),统计各个字符的概率
(2)构造哈夫曼树
(3)对英文文件进行编码,输出一个编码后的文件
(4)对编码文件进行解码,输出一个解码后的文件
(5)撰写博客记录实验的设计和实现过程,并将源代码传到码云
(6)把实验结果截图上传到云班课
2. 测试过程及结果
基本原理:
哈夫曼树:给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。
路径: 树中一个结点到另一个结点之间的分支构成这两个结点之间的路径。
路径长度:路径上的分枝数目称作路径长度。
树的路径长度:从树根到每一个结点的路径长度之和。
结点的带权路径长度:在一棵树中,如果其结点上附带有一个权值,通常把该结点的路径长度与该结点上的权值之积称为该结点的带权路径长度(weighted path length)
树的带权路径长度:如果树中每个叶子上都带有一个权值,则把树中所有叶子的带权路径长度之和称为树的带权路径长度。
3. 代码链接
(https://gitee.com/CS-IMIS-23/linan20172330newterm)
4. 测试过程中遇到的问题和解决过程
5.参考资料
以上是关于哈夫曼解码编码实现的主要内容,如果未能解决你的问题,请参考以下文章
c++实现哈夫曼树,哈夫曼编码,哈夫曼解码(字符串去重,并统计频率)
求哈夫曼解码C语言程序 请各位大侠在我原有的程序上加上哈夫曼解码的程序,不胜感激!