-
去年做的课程设计,有什么不合要求的自己改改#include#include#includeintm,s1,s2;typedefstruct{unsignedintweight;unsignedintparent,lchild,rchild;}HTNode,*HuffmanTree;//动态分配数组存储哈夫曼树typedefchar*HuffmanCode;//动态分配数组存储哈夫曼编码表voidSelectHuffmanTreeHT,intn{inti,j;fori=1;iHT;getchar;。
齐文泉2019-12-22 00:54:02
-
概念--哈夫曼树。不复制了构造步骤--哈夫曼树。参考如下图来画吧:http://baike.baidu.com/picture/127820/127820/0/c9bdddceac0cbb3393457e06.html?fr=lemma&ct=single#aid=0&pic=c9bdddceac0cbb3393457e06或者http://zhidao.baidu.com/question/681309808395170052,之前我给其他人详细解答的过程来画吧,只是自己找8个权值的点相关代码参考如下#include#include#define N 50 //叶子节点数#define M 2*N-1 //树中总结点数typedef struct{ char data.rchild; CreateHCodeht,hcd,n; DispHCodeht,hcd,n; printf""; scanf"%d",&n;}程序流程图得自己写了。
齐方明2019-12-22 00:36:02
-
#include#include#include#include#include#include#defineINF10000usingnamespacestd;//------哈夫曼树的存储表示------typedefstruct{chardata;//结点的字符intweight;//结点的权值intparent,lchild,rchild;//结点的双亲,左孩子,右孩子下标}HTNode,*HFMTree;HFMTreeHT;//------哈夫曼编码表的存储表示------typedefchar**HFMcode;//动态分配数组存储哈夫曼编码表HFMcodeHC;intN;//字符集个数//函数声明voidhello;//欢迎界面voidfunc;//具体功能函数voidinitHFMHFMTree&,int;//构造哈夫曼树voidselectHFMTree,int,int&;//构造哈弗曼树的子函数--选择结点voidcreatHFMcodeHFMTree,HFMcode&,int;//求哈夫曼编码voidadd_code_to_fileHFMTree,HFMcode,int;//将初始哈夫曼编码存入文件hfmTree中voidEncoding;//编码voidDecoding;//译码voidPrint;//显示编码//函数定义voidhello{cout>c;switchc{case''I'':case''i'':cout>N;initHFMHT,N;break;case''E'':case''e'':Encoding;break;case''D'':case''d'':Decoding;break;case''P'':case''p'':Print;break;case''T'':case''t'':;case''O'':case''o'':case''0'':exit0;default:cout>HT;ift%50==0cout<<'''';}}in.close;out.close;cout<<"显示完毕并保存成功,请按回车键继续操作";getchar;getchar;hello;}intmain{hello;return0;。
齐春惠2019-12-22 00:05:34
-
哈夫曼编码首先要构造哈夫曼树,其构造规则是从概率这个序列中选择两个最小结点的值构造一颗树,新的树根的权值为两个子树的概率权值和。如题中,首先选择0.02和0.03构造一颗树,将权值之和放回序列中,为:0.070.190.100.320.210.060.05继续上述过程只剩下一颗树为止。最终哈夫曼树为:1/\0.400.60/\/\b0.19g0.210.28e0.32/\0.110.17/\/\0.05h0.06a0.07d0.10/\f0.02c0.03哈夫曼编码是从根结点开始,找叶子结点,也就是相关字符,默认往左为0,往右为1所以b的编码是00,g:01e:11h:1001a:1010d:1011f:10000c:10001。
连俊文2019-12-21 23:54:03