求助有关哈夫曼树编码的问题?急!

来源:百度知道 编辑:UC知道 时间:2024/05/28 15:59:55
即任意输入一串字符,统计每个字符出现的个数作为哈夫曼树中对应的叶子结点的权值,构建一棵哈夫曼树,请重点说明怎么统计出字符出现的频率后传给存放权值的数组?并输出来!例如:输入aabcbabd后,会输出a--3
b--3 c--1 d--1(数组也是动态分配内存的)
由于刚加入百度,积分很低,无法悬赏分值,请多多帮忙!

我去年数据结构课程设计做的就是这个,具体什么意思也忘得差不多了
反正做了好多天的
把这段代码复制给你
void HuffmanCoding(HuffmanTree *HT,HuffmanCode *HC, LNode &L,int n)
{ //构造赫夫曼树HT,并求出n个字符的赫夫曼编码HC

int m,i;
int s1,s2;

HuffmanTree p;
char *cd;
if(n<=1)
return;
m=2*n-1;
*HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode)); // 0号单元未用
LNode *L1;
L1=L.next; //统计出来的各结点的data,及字母出现的次数
for(p=*HT+1,i=1;i<=n;++i,++p,L1=L1->next) //初始化前 n个结点
{
(*p).num=i; //序号
(*p).weight=L1->n; //权重
(*p).data =L1->data;
(*p).parent=0;
(*p).lchild=0;
(*p).rchild=0;
}

for(;i<=m;++i,++p) //初始化剩下的结点
{
(*p).parent=0 ;
(*p).data='\0' ;
(*p).num=i;
}

HuffmanTree H_T; //辅助存储单元,用它进行堆排序调用
int j;
int r=n; <