资源简介
哈夫曼编码:从键盘输入若干字符及每个字符出现的频率,将字符出现的频率作为结点的权值,建立哈夫曼树,然后对各个字符进行哈夫曼编码,最后打印输出字符及对应的哈夫曼编码。
代码片段和文件信息
#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下编译
相关资源
- 3des加密算法C语言实现
- 基于图割的图像分割OpenCV+MFC实现
- MFC实现的红绿灯程序
- 页面置换算法用MFC实现了
- MFC实现画板
- 用MFC实现的简单qq聊天
- MFC实现简易画图程序
- SNL语言编译器GUI VC++ 2008版 MFC实现可
- MFC实现可编辑Excel文件
- 超市库存管理系统的MFC实现
- 使用MFC实现真实感图形绘制
- MFC实现简单计算器支持加减乘除和括
- 一元二次方程求解MFC实现
- 迷宫MFC实现最短路径,有简单界面迷
- 二叉树 VC6.0 MFC实现 数据结构
- 用MFC实现的图像处理源代码总集
- 图像边缘提取经典算法MFC实现
- MFC实现dem的读取与现实
- MFC实现RSA算法
- tcp客户端程序之mfc实现
- TSP 蚁群算法 MFC实现
- VC实现虚拟打印机的框架源代码
- MFC实现多任务多线程软件
- FTP客户端VC实现
- 用c++编写的打气球的游戏,用MFC实现
- MFC实现高仿画板、绘图软件功能带详
- 冒泡排序MFC实现
- [毕业分享] MFC实现数字图像处理软件
- MFC实现的排序算法可视化软件
- mfc实现扫雷194704
评论
共有 条评论