您的位置:首页 > 其它

贪心算法-Huffman算法2-错误改进

2012-10-01 14:15 169 查看
选出最小和次小

p1=p2=0; //相关变量赋初值 min1=min2=1000;//相当于一个大数 for(j=0;j<n+i;j++) { if(pht->ht[j].parent==0) { if(pht->ht[j].weight<min1) { min1=pht->ht[j].weight; p1=j; } } } for(j=0;j<n+i;j++) { if(pht->ht[j].parent==0) { if((pht->ht[j].weight>min1)&&(pht->ht[j].weight<=min2)&&(j!=p1)) { min2=pht->ht[j].weight; p2=j; } } }

使用flag分派字符串大小

for(int i=0;i<n;i++)

{ flag=0; //start=n-1; //k,f是两个工作指针,f指向k的父亲 for(int k=i,f=pht->ht[i].parent;f!=0;k=f,f=pht->ht[k].parent) { flag++; //左边分配0,右边分配1 } //--------------- c=(char*)malloc(sizeof(char)*(flag)); c[flag]='\0'; for(int k=i,f=pht->ht[i].parent;f!=0;k=f,f=pht->ht[k].parent) { if(pht->ht[f].lchild==k) { c[--flag]='0'; } else { c[--flag]='1'; } } //为第i个字符编码分配空间 //因为路径有长有短 HC[i]=(char*)malloc(sizeof(char)); strcpy(HC[i],c); }输出

for(int i=0;i<n;i++) { int j=0; printf("第%d个字符的编码,它的权值为是%d:\n",i,weight[i]); { printf("%s\n",HC[i]); //j++; } }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: