求助有关哈夫曼树的问题!急!满意的答案再加100分!

来源:百度知道 编辑:UC知道 时间:2024/06/07 23:59:30
紧急求助哈夫曼树的问题,请各位帮帮忙!谢谢了!
问题如下(注意不是静态数组的方法):
1、用动态生成结点的方法构造哈夫曼树,按先根序列输出您生成的哈夫曼树的结点的权值。
2、用您构造哈夫曼树的程序,给26个英文字母编码,26个英文字母的权可按如下方法给出:在任一英文字典中,该字母开始的单词的数量占总单词量的比(不必很准确)。
这两个问题是放在一个程序里头的。

麻烦各位给我编一下,越快越好,谢谢!!满意的答案我会再追加100分!

#include <iostream>
#include <string>
using namespace std;
typedef struct{
char lett;
int freq;
int parent,left,right;
}ELEM,*HuffmanTree;
typedef char **HuffmanCode;
void Select(HuffmanTree,int,int&,int&); //find min
void Create(HuffmanTree &ht,int *frq,char *s,int n)
{
int i,m;
int s1,s2;
HuffmanTree p;
m=2*n-1; //create 2*n-1 nodes for n charactors
ht=(HuffmanTree)malloc((m+1)*sizeof(ELEM));//assign memory
for(p=ht+1,i=1;i<=n;i++,p++,frq++,s++) {//initialize huffman trees
p->lett=*s;
p->freq=*frq;
p->parent=p->left=p->right=0;
}
for(i=n+1;i<=m;++i,++p){
p->freq=p->parent=p->right=p->left=0;
}
for(i=n+1;i<=m;++i)
{
Select(ht,i-1,s1,s2); // find the minvalue fromHT[1...i-1],s1,s2
ht[s1].parent=ht[s2].parent=i;
ht