永发信息网

对下面给出的数据序列,构造一颗哈夫曼树,并求出其带权路径长度 4,5,6,7,10,12,15,18,23 急!!!!

答案:1  悬赏:10  手机版
解决时间 2021-04-28 08:26
  • 提问者网友:回忆在搜索
  • 2021-04-27 13:44
对下面给出的数据序列,构造一颗哈夫曼树,并求出其带权路径长度 4,5,6,7,10,12,15,18,23 急!!!!
最佳答案
  • 五星知识达人网友:往事埋风中
  • 2021-04-27 14:15
给你一个建树的代码
Select(HuffNode HT[],int j)
{
for(i=0;iif(HT[i].parent==0)
{s1=i;break;}
for(;iif((HT[i].parent==0)&&(HT[i].weights1=i;
HT[s1].parent=1;
for(i=0;iif(HT[i].parent==0)
{s2=i;break;}
for(;iif((HT[i].parent==0)&&(i!=s1)&&(HT[i].weights2=i;
return(s1);return(s2);}
void HuffmanTree(HuffNode HT[]){
m=2*n-1;int temp;
for(i=0;i {HT[i].weight=w[i]; HT[i].parent=0; HT[i].lchild=0; HT[i].rchild=0;}
for(;i {HT[i].weight=0; HT[i].parent=0; HT[i].lchild=0; HT[i].rchild=0;}
for(i=n;i Select(HT,i);
HT[s1].parent=i;
HT[s2].parent=i;
HT[i].lchild=s2;
HT[i].rchild=s1;
HT[i].weight=HT[s1].weight+HT[s2].weight;
}
temp=HT[i-1].lchild;HT[i-1].lchild=HT[i-1].rchild;HT[i-1].rchild=temp;
FILE *fp;
if((fp=fopen("E:\\HuffmanTree.txt","a+"))==NULL)
{printf("打不开此文件\n"); exit(0);}
printf("权值 父母 左孩子 右孩子\n");
fprintf(fp,"权值 父母 左孩子 右孩子\n");
for(i=0;ifprintf(fp,"%3d%6d%7d%8d\n",HT[i].weight,HT[i].parent,HT[i].lchild,HT[i].rchild);
printf("%3d%6d%7d%8d\n",HT[i].weight,HT[i].parent,HT[i].lchild,HT[i].rchild);
}
fclose(fp);
}
不完全,因为我做的还有译码和编码 当然还要你自己修改追问呵呵 ,这么多代码,辛苦了,谢谢
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯