#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct{
char ch;
int weight;
int parent,lchild,rchild;
}HTNode,*HuffmanTree;
typedef char ** HuffmanCode;
void Select(HuffmanTree HT,int n,int &s1,int &s2){
int min1,min2,i;
min1=min2=999;
s1=s2=0;
for(i=1;i<=n;i++){
if(!HT[i].parent){
if(HT[i].weight<min1){
min2=min1;
s2=s1;
min1=HT[i].weight;
s1=i;
}
else if(HT[i].weight<min2){
min2=HT[i].weight;
s2=i;
}
}
}
}
void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int w[],int n,char str[]){
int i,m,s1,s2;
int start,f,c;
char *cd;
if(n<=1)
exit(0);
m=2*n-1; //结点数
HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode));//0单元不用
HT[0].ch=' ';
HT[0].lchild=0;
HT[0].weight=0;
HT[0].parent=0;
HT[0].rchild=0;
for(i=1;i<=n;i++){
HT[i].ch=str[i-1];
HT[i].weight=w[i-1];
HT[i].parent=0;
HT[i].lchild=0;
HT[i].rchild=0;
}
for(;i<=
C语言实现哈夫曼编码
最新推荐文章于 2024-05-18 17:23:33 发布