资源简介
哈夫曼编码:从键盘输入若干字符及每个字符出现的频率,将字符出现的频率作为结点的权值,建立哈夫曼树,然后对各个字符进行哈夫曼编码,最后打印输出字符及对应的哈夫曼编码。
代码片段和文件信息
#include
#include
#define N 10 /*待编码字符的个数,即树中叶结点的最大个数*/
#define M 2*N-1 /*树中总的结点数目*/
typedef struct{
int weight;
int parentlchildrchild;
}HTNode; /*树中结点的结构*/
typedef struct {
char data; /*待编码的字符*/
int weight; /*字符的权值*/
char code[N]; /*字符的编码*/
} HTCode;
void Init(HTCode hc[]int *n){ /*初始化,读入待编码字符的个数n,从键盘输入n个字符和n个权值*/
int i;
printf(“please input the number of code which is to be encoded‘n‘(end by 0):\n“);
scanf(“%d“&(*n));
if(*n!=0){
printf(“input %d character\n“*n);getchar();
for (i=1;i<=*n;i++)
hc[i].data=getchar();
printf(“input %d weight\n“*n);
for (i=1;i<=*n;i++)
scanf(“%4d“&hc[i].weight);
}
}
void Select(HTNode ht[]int kint *s1int *s2){
/*ht[1?k]中选择parent为0,并且weight最小的两个结点其序号由指针变量s1s2指向*/
int i;
for (i=1;i<=k && ht[i].parent!=0;i++);
*s1=i;
for (i=1;i<=k;i++)
if (ht[i].parent==0 && ht[i].weight *s1=i;
for (i=1; i<=k;i++)
if (ht[i].parent==0 && i!=*s1)
break;
*s2=i;
for (i=1;i<=k;i++)
if ( ht[i].parent==0 && i!=*s1 && ht[i].weight *s2=i;
}
void huffman(HTNode ht[]HTCode hc[]int n)
{
int ims1s2;
m=2*n-1;
for (i=1;i<=m;i++){
if (i<=n) ht[i].weight=hc[i].weight;
else ht[i].weight=0;
ht[i].parent=
- 上一篇:B树 C语言实现
- 下一篇:文件系统c语言实现,在linux下编译
相关资源
- c++实现的哈夫曼编码和解码源代码
- 一个MFC实现的简单的记事本程序
- C++哈夫曼编码与译码课程设计实现源
- 原创modbus 协议c实现 C 语言 实现功能
- MFC实现图形放大缩小
- 如何用VC实现对超长数据库字段操作
- MFC实现PopStar小游戏
- MFC实现数据绘图显示示波器界面
- 门限秘密分享算法C实现
- c++ MFC实现文件合成器功能,实现多种
- mfc实现多线程工程代码和线程进程查
- C++实现哈夫曼树及哈夫曼编码.rar
- n元哈夫曼编码
- 产生式系统反向推理算法的设计与实
- 基于哈夫曼编码的文本文件压缩与解
- C实现基于Socket实现自定义协议通信
- C实现数字转Unicode码
- 罗马尼亚度假问题MFC实现
- 博弈树树的c实现
- VC/MFC实现简单的Http服务器可访问图片
- 梁友栋-Barsky直线裁剪算法 VC实现
- SHA1算法C实现源码
- 一个五子棋游戏的MFC实现源码已判禁
- mfc实现简单文字输出
- 基于C++和MFC的哈夫曼编码压缩软件的
- rsa MFC实现源码
- MFC实现填充算法
- 用openglMFC实现的魔方
- 密码学MFC实现仿射加密解密超级计算
- 蚂蚁算法MFC实现执行文件
评论
共有 条评论