求:c语言编写的哈夫曼编码系统 #includeincludedefine MaxSize 50typedef struct{char c;int w;char code[MaxSize];}HuffCode[MaxSize];typedef struct{int Weight;int LChild,RChild,Parent;}HTNode,HuffTree[MaxSize];void HuffmanTree(HuffTree HT,int length,HuffCode hc);void SelectHTNode(HuffTree HT,int n,int*min1,int*min2);void HuffmanCode(HuffTree HT,int len,HuffCode hc);int main(void){HuffTree HT;HuffCode HC;int i,len;printf(\"\\n输入2113字符串字符数量5261:\");scanf(\"%d\",&len);system(\"cls\");printf(\"代码数量:%2d\\n\\n\",len);printf(\"输入代码及权值(e.g.:\\\"a 16[回车4102]\\\"):\\n\");for(i=1;i;i+){while(getchar()。1653='\\n')NULL;printf(\"No.%2d:\",i);HC[i].c=getchar();scanf(\"%d\",&HC[i].w);}HuffmanTree(HT,len,HC);HuffmanCode(HT,len,HC);printf(\"\\n输出Huffman编码:\\n\");for(i=1;i;i+){printf(\"\\n%c:\",HC[i].c);puts(HC[i].code);}return 0;}void HuffmanTree(HuffTree HT,int length,HuffCode hc){int i,min1,min2;HT[0].Weight=65535;for(i=1;i;i+){HT[i].Weight=hc[i].w;HT[i].LChild=HT[i].RChild=HT[i].Parent=-1;}for;i*length;i+)。
哈夫曼编码和二进制编码优缺点比较 比较如下:1、码字不同。哈夫曼所构造的码字不是唯一的,对于同一个信息源,无论上述的前后顺序如何排列,它的平均码长是不会改变的,所以他的优点是编码效率唯一性。而二进制编码所构造的码字是唯一。2、长度不同哈夫曼编码是依据字符出现概率来构造异字头的平均长度最短的码字,比较精准,二进制编码是用预先规定的方法将文字、数字或其他对象编成二进制的数码,或将信息、数据转换成规定的二进制电脉冲信号。二进制是最基础的编码。3、稳定性不同哈夫曼编码的稳定性比较差。如果改变其中一位数据就会产生改变。二进制编码具有抗干扰能力强,可靠性高等优点。参考资料来源:-哈夫曼编码参考资料来源:-二进制编码
c或c++ 实现 哈夫曼编码 最优字符串编码
字符串\ 根据字符出现频率构建的带权重二叉树确定每个字符编码的。首先我们统计“alibaba”各个字符出现频率:a-3,b-2,l-1,i-1。由出现的频率我们有以下哈夫曼二叉树:对应每个字符编码为:所以最终“alibaba”整个字符串的编码为0 100 101 11 0 11 0。也就是说该字符串二进制哈夫曼编码位数为13位。
哈夫曼编码和二进制编码优缺点比较 比较如下:1、码字不同。哈夫曼所构造的码字不是唯一的,对于同一个信息源,无论上述的前后顺序如何排列,它的平均码长是不会改变的,所以他的优点是编码效率唯一性。而。
对一篇文章进行哈夫曼编码,生成哈夫曼树之后,怎样将编码以二进制的形式写入到文件中,而不是以字符? 当你把哈夫曼树构造成功后 对于每一个字符都可以用 0 1来表示,你可以让每八个0 1组合转换成十进制,然后在把这个数值付给一个字符,这样就等于用2进制存储了 把八个0 1组合压缩成了一个字节,即二进制写入文件了!
一道关于求哈夫曼编码的数据结构题,求解答 哈夫曼编码首先要构造哈夫曼树,其构造规则是从概率这个序列中选择两个最小结点的值构造一颗树,新的树根的权值为两个子树的概率权值和。如题中,首先选择0.02 和 0.03构造一颗树,将权值之和放回序列中,为:0.07 0.19 0.10 0.32 0.21 0.06 0.05继续上述过程只剩下一颗树为止。最终哈夫曼树为:1\\0.40 0.60\\/\\b0.19 g0.21 0.28 e0.32\\0.11 0.17\\/\\0.05 h0.06 a0.07 d0.10\\f(0.02)c(0.03)哈夫曼编码是从根结点开始,找叶子结点,也就是相关字符,默认往左为0,往右为1所以b的编码是00,g:01 e:11 h:1001 a:1010 d:1011 f:10000c:10001