c 语言实现 : 哈夫 曼编码解码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
#define M 2*N-1
typedef char * HuffmanCode[2*M];//haffman 编码
typedef struct
{
int weight;// 权值
int parent;// 父节节点
int LChild;// 左子节点
int RChild;// 右子节点
}HTNode,Huffman[M+1];//huffman 树
typedef struct Node
{
int weight; // 叶子结点的权值
char c; // 叶子结点
int num; // 叶子结点的 二进制码的长度
}WNode,WeightNode[N];
/*** 产生 叶子结点的字符和权值 ***/
void CreateWeight(char ch[],int *s,WeightNode CW,int *p)
{
int i,j,k;
int tag;
*p=0;// 叶子节点个数
// 统计字 符出现个数 , 放 入 CW
for(i=0;ch[i]!=' ';i++)
{
tag=1;
for(j=0;j<i;j++)
if(ch[j]==ch[i])
{
tag=0;
break;
}
if(tag)