本博为哈夫曼编码算法,首先是建立哈夫曼树,然后分别写了从叶子到根结点以求各字符编码的函数和从根至叶子遍历以求各字符编码的函数。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXWEIGHT 100
typedef struct
{
int weight;
int parent,lchild,rchild;
}HTNode,*HuffmanTree;
typedef char * * HuffmanCode;
void HuffmanTreeBuilding(HuffmanTree *HT,int *w,int n);
void HuffmanCoding1(HuffmanTree HT,HuffmanCode *HC,int n);
void HuffmanCoding2(HuffmanTree HT,HuffmanCode *HC,int n);
void Select(HuffmanTree H,int n,int *s1,int *s2);
int main()
{
int n;
printf("有多少种字符:");
scanf("%d",&n);
int *w,i;
w=(int *)malloc(sizeof(int));
for(i=0;i<n;i++)
{
printf("输入第%d个字符的权重:",i+1);
scanf("%d",&w[i]);
}
HuffmanTree *HT;
HT=(HuffmanTree *)malloc(sizeof(HuffmanTree));
HuffmanCode *HC,*HC2;
HC=(HuffmanCode *)malloc(sizeof(HuffmanCode));
HC2=(Huffman