哈夫曼源程序(国外英语资料).doc

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
哈夫曼源程序(国外英语资料)

哈夫曼源程序(国外英语资料) #包括 stdio. h #包括是。H #包括字符串。” #包括 malloc。” #定义0 #定义max_num 10000 #定义马克斯60 #定义N 60 这是一个状态; typedef char * HuffmanCode; typedef struct { unsigned int的重量;/ /字符对应的权值 unsigned int型的家长,rchild左右; } HTNode * HuffmanTree;/ /此处定义了哈夫曼树节点的数据类型提供给赫夫曼使用。 typedef struct { HuffmanTree HT; char * c;/ /存放将要建立哈夫曼树的字符 int长度;/ /字符的大小,即开始第一步输入的一个整数 霍夫曼码HC;/ /存放对应的哈夫编码即对应的01代码 }赫夫曼; int的; 无效的选择(HuffmanTree HT,int,int int * * S1,S2) / /把输入的字符按权值从小到大排序,挑出最小权值供huffmancoding()调用 / /并且根节点的权值等于他的左右孩子的权值和 / / 2是在剩下的字符中挑出的最小的劝值的字符 { int i; int 1 = max_num;/ /分钟是根节点的权值 2 / 2是在剩下的字符中挑出的最小的权值的字符int; 对于(i = 1;i =结束;i + +) { 如果(HT [我]。母= = 0和HT [我]。体重<1) { *S1; 1 = HT [我]。重量; } } 2 = max_num; 对于(i = 1;i =结束;i + +) { 如果(HT i =父= = 0 (!=我)和2 HT [我]的重量)。 { * S2 =我; 2 = HT [我]。重量; } } / /测试printf(“qqqqq %d \ nwwwww %d\n”,1,2); } Huffman HuffmanCoding(Huffman Hfm)/将输入的字符以及他的权值,按照哈夫曼规则建立2叉树 { --------------------------------- / * * / 我,N,M,S1,S2,开始; 中的C; 字符光盘; n = hfm.longth; 如果(n≤1)返回HFM; m = 2 * n-1; 对于(i = n + 1;i = m;++) { 选择(HFM。HT,I-1,与S1或S2); HFM。HT [S1]。母=我; HFM。HT [ 2 ]。母=我; HFM。HT [我]左右= S1; HFM。HT [我]。rchild = S2; HFM。HT [我]。重量= HFM。HT [S1]。重量+ HFM。HT [ 2 ]。重量; / /构造哈夫曼树时候,根节点的权值等于他的左右孩子权值和 / /测试printf(“HT %d %d \ \ NS1,NS2,%d”,HFM。HT [我]。重量、S1、S2); } ------------------------------------------ / * * / HFM。HC =(霍夫曼码)malloc((n + 1)* sizeof(char *)); CD =(char *)malloc(N * sizeof(char)); CD [ N-1 ] = 0; 01 /中间变量用来存储字符对应的哈夫曼编码 对于(I = 1;i = n;++) { 开始= n-1; 为(C = I,F = HFM。HT [我]母;F!= 0;C = F,F = HFM。HT [F]母)。 { 如果(C = = HFM。HT [F]。左右)[开始]——CD = 0; [开始]——其他CD = 1”; } HFM。HC [我] =(char *)malloc((n-start)* sizeof(char)); strcpy(HFM。HC [我],和CD [开始]); / /将CD [ ]的值存储到变量HFM。HC [我]中 / /该变量在霍夫曼数据类型中有定义 } 免费(光盘); 返回HFM; } Huffman InputHuffman(Huffman Hfm)/接收原始数据:从终端读入字符集大小N,N个字符和N个权值, / /建立哈夫曼树,存于文件hfmTree. DAT中供inithuffman()函数调用。 { 中的i,n;char a; printf(“\n \n\n T T ********************构造哈夫曼树********************* \n”); printf(“不字符以及它的权值,数据将保存到同名目录下的hfmtree。DAT“\n”); printf(“请输入字符的个数:”); scanf(

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档