资源简介
设计一个利用哈夫曼算法的编码和译码系统,重复地显示并处理“要求”中项目,直到选择退出为止。 要求: (1)将权值数据存放在数据文件(文件名为data.txt,位于执行程序的当前目录中) (2)分别采用动态和静态存储结构 (3)从键盘输入字符集大小n、n个字符和n个权值,建立哈夫曼树; (4)利用建好的哈夫曼树生成哈夫曼编码; (5)输出编码; 用户可以执行的的功能有: (1)---选择读取某个源文件由系统解析建立哈夫曼树 (2)---手动输入字符集及其权值信息建立哈夫曼树 (3)---打印字符集的哈夫曼编码到屏幕 (4)---选择某个文本文件进行编码 (5)---选择某个代码
代码片段和文件信息
/*设计一个利用哈夫曼算法的编码和译码系统,重复地显示并处理“要求”中项目,直到选择退出为止。
要求:
(1)将权值数据存放在数据文件(文件名为data.txt,位于执行程序的当前目录中)
(2)分别采用动态和静态存储结构
(3)从键盘输入字符集大小n、n个字符和n个权值,建立哈夫曼树;
(4)利用建好的哈夫曼树生成哈夫曼编码;
(5)输出编码;
设字符集及频度如下:
字符: 空格 A B C D E F G H I J K L M,频度分别为: 186 64 13 22 32 103 21 15 47 57 1 5 32 20
字符: N O P Q R S T U V W X Y Z ,频度分别为:57 63 15 1 48 51 80 23 8 18 1 16 1*/
#include
#include
#include
#define MAXVAL 10000.0
struct hufmtreenode{//哈弗曼树结点数据类型
char data;
float weight;//结点权值
int parentlchildrchild;//父结点,左、右孩子结点
};
struct hufmtree{//哈弗曼树数据类型
hufmtreenode *node;//结点数组(根据n的值动态分配)
int n;//叶子结点数
};
struct Codetype{//哈弗曼编码数据类型
char *bits;//编码流数组,n为为哈夫曼树中叶子结点的数目,编码的长度不可能超过n
int start;//编码实际在编码流数组里的开始位置
};
void SortHufmtree(hufmtree *tree){//将哈夫曼树n个叶子结点由大到小排序
int ijk;
hufmtreenode temp;
if (tree==NULL)
return;
for (i=0;in;i++)
{
k=i;
for(j=i+1;jn;j++)
if (tree->node[j].weight>tree->node[k].weight)
k=j;
- 上一篇:改进遗传算法优化分布式电源选址定容
- 下一篇:基于MVC校园二手交易平台设计与实现
相关资源
- 模式分析的核方法中文版和英文版合
- zw_qq_41143492-10381309-学生考试系统.zip
- zw_feifan50-9720417-MissionPlanner1.3.32PlayUA
- zw_weixin_42810059-10567648-数学分析考研笔
- 刺客.rar
- zw_DXF转G代码.zip
- 彩票开发源码.zip
- 斯坦福-IntroductiontoRobotics.zip
- zw_gephi-0.8.2-beta.setup.zip
- zw_嵌入式网络那些事(完整中文版)
- zw_WINDOWSAPI程序设计参考大全.zip
- zw_ssm-crm-new.zip
- zw_SolidWorks2014中文版基础教程.zip
- zw_Altera官方元件封装库.zip
- zw_AutofacIOC.zip
- zw_ionicDemo.zip
- Location虚拟定位ios12.1破解版.zip
- 流体模拟插件NextLimitRealFlowC4D2.6.5.00
- 老虎淘宝客v6.0.15.zip
- iSkysoft Video Converter Ultimate 5.1简体中文
- 20180704全彩种彩票网站源码.rar
- 暗影2MAC12系统安装clover.zip
- fdt_4_09_03.exe
- pkg-win.zip
- PRML最全资料集合.zip
- 数据可视化驾驶舱.zip
- 李晓峰通信原理.zip
- 图解西门子S71200PLC入门到实践(清晰
- AI拓客商家联盟V2.1.3前端+后端.rar
- echarts大数据领导仓demo.rar
评论
共有 条评论