文件名称:将字母编码为二进制数
文件大小:9KB
文件格式:TXT
更新时间:2013-07-01 05:07:34
hafuman
#include s2)
{
j=s1;
s1=s2;
s2=j;
}
HT[s1].parent=HT[s2].parent=i;
HT[i].lchild=s1;
HT[i].rchild=s2;
HT[i].weight=HT[s1].weight+HT[s2].weight;
}
//从叶子到根逆向求每个字符的哈夫曼编码
HC=(HuffmanCode)malloc((n+1)*sizeof(char*));
cd=(char*)malloc(n*sizeof(char));
cd[n-1]='\0'; //编码结束符
for(i=1;i<=n;i++)//逐个字符求哈夫曼编码
{
start=n-1;//编码结束位置
for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent)//从叶子逆向求编码
if(HT[f].lchild==c)//左0右1编码
cd[--start]='0';
else
cd[--start]='1';
HC[i]=(char*)malloc((n-start)*sizeof(char));
strcpy(HC[i],&cd[start]); //复制串
}
free(cd);
}
void Initialization()//初使化,从终端读入字符集大小n,以及n个字符和n个权值,建树,并存入文件中
{
int num;
int quan;
cout<<"请输入字符集个数:";
cin>>num;
n=num;
w=(int*)malloc(n*sizeof(int));//存放权
z=(char*)malloc(n*sizeof(char));//存放字符
cout<<"请依次输入"<