1.哈夫曼编码器#include "stdio.h"#include "stdlib.h"#include "string.h" typedef struct{ char ch; unsigned int weight; unsigned int parent, lchild, rchild; } HTNode;//哈夫曼树类型定义(用一维数组表示) typedef HTNode HuffmanTree[100]; //假设树最多100个结点//存放哈夫曼编码的变量类型定义(用两维字符数组) typedef char HuffmanCode[100][100];//假设最多100个字符,每个字符编码最多100位 void select(HuffmanTree HT, unsigned int n, unsigned int *s1,unsigned int *s2) { unsigned int flag=1000;/*设一个权值最大值*/ unsigned int i,minweight; minweight=flag; for(i=1;i<=n;i++) {/*查找parent为0,权值最小的结点,把序号记入s1中*/ if(HT[i].parent==0 && HT[i].weight
typedef struct
{
char data;//节点值
int weight; //权重
int parent; //双亲节点
int lchild; //左孩子节点
int rchild; //右孩子节点
} HTNode;
typedef struct
{
char cd[N]; //存放哈夫曼码
int start;
} HCode;
void CreateHT(HTNode ht[],int n) //创建哈夫曼树
void CreateHCode(HTNode ht[],HCode hcd[],int n) //根据哈夫曼树计算每个元素的哈夫曼编码
void DispHCode(HTNode ht[],HCode hcd[],int n) //输出每个元素的哈夫曼编码
3.哈夫曼编码的C语言源代码原发布者:丁丁的23号