www.pudn.com > haffman.rar > haffman.cpp
#define MAXVALUE 1000 #define MAXLEAF 30 #define MAXNODE 59 #define MAXBIT 10 #define Maxsize 200 typedef unsigned char SString[Maxsize] ; #includetypedef struct { char data; int Weight; int Flag; int Parent; int LChild; int RChild; }hnodetype; typedef struct { int Bit[MAXBIT]; int Start; }hcodetype; void CreatString(SString s) { printf("\n请输入电文,以*结尾\n"); scanf("%s",s); } void CountString(SString s,int count[],char alph[]) { //int count[100]; //char alph[100]; int i,j,k; i=0;j=0;k=0; for(i=0;i<100;i++) count[i]=0; for(i=0;i<100;i++) alph[i]='#'; while(s[j]!='*'){ for(j=0;s[j]!='*';j++){ i=0; while(alph[i]!='#'&&alph[i]!=s[j])i++; if(alph[i]='#'){ alph[i]=s[j]; count[i]=count[i]+1; } else if(alph[i]=s[j]) count[i]=count[i]+1; } } printf("\n各字符频数统计\n"); for(i=0;i<100&&alph[i]!='#';i++) printf("%c的权值为%d\n",alph[i],count[i]); } void TnitHaffman(hnodetype HuffNode[],hcodetype HuffCode[], int n,int count[],char alph[]) { int i; //for(j=0;alph[j]!='#';j++); for(i=0;i<2*n-1;i++) { HuffNode[i].Weight=0; HuffNode[i].Flag=0; HuffNode[i].Parent=0; HuffNode[i].LChild=-1; HuffNode[i].RChild=-1; } for(i=0;i