数据结构 树的变成习题.doc

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

?实验题目(共6题, 第1题) 标题: Huffman树 时?限: 1000?ms 内存限制: 10000?K 总时限: 3000?ms 描述: Huffman树 对输入的英文大写字母进行统计概率 然后构建哈夫曼树,输出是按照概率降序排序输出Huffman编码。 输入: 大写字母个数 n 第一个字母 第二个字母 第三个字母 ...? 第n个字母 输出: 字母1 出现次数 Huffman编码 字母2 出现次数 Huffman编码 字母3 出现次数 Huffman编码 … 字母n 出现次数 Huffman编码 输入样例: 10 I I U U U I U N U U 输出样例: U 6 1 I 3 01 N 1 00 ? 提示: 来源: #include?stdio.h #include?stdlib.h #include?string.h #define?MAX??27 #define?MAX_INT??99999 typedef?struct { ????int?weight; ????int?parent,lchild,rchild; }?HTNode,*HuffmanTree; typedef?char?**HuffmanCode; typedef?struct?Charnode { ????char?c; ????int?weight; }?CharNode,*CharNodePtr; CharNode?*b; int?Chat_get() { ????char?c; ????int?j=0; ????int?m; ????int?i; ????scanf(%d,m); ????getchar(); ????b=(CharNodePtr)malloc(sizeof(CharNode)*MAX); ????int?a[MAX]; ????for(i=0;?iMAX;?i++) ????{ ????????a[i]=0; ????} ????for(i=0;?im;?i++) ????{ ????????scanf(%c,c); ????????getchar(); ????????a[c-A]++; ????} ????for(i=0;?i26;?i++) ????{ ????????if(a[i]!=0) ????????{ ????????????b[j].c=char(i+A); ????????????b[j].weight=a[i]; ????????????j++; ????????} ????} ????return?j; } int?min(HuffmanTree?t,int?i) { ????int?j,flag; ????int?k=MAX_INT; ????for(j=1;?j=i;?j++) ????????if(t[j].weightkt[j].parent==0) ????????????k=t[j].weight,flag=j; ????t[flag].parent=1; ????return?flag; } void?select(HuffmanTree?t,int?i,int?s1,int?s2) { ????s2=min(t,i); ????s1=min(t,i); } void?PrintHuffmanTree(HuffmanTree?HT,HuffmanCode?HC,?int?n) { ????int?i,?c,?cdlen; ????char?*cd; ????HC=(HuffmanCode)malloc((n+1)*sizeof(char*)); ????cd=(char*)malloc(n*sizeof(char)); ????c=2*n-1; ????cdlen=0; ????for(i=0;?i=c;?++i)?HT[i].weight=0; ????while(c) ????{ ????????if(HT[c].weight==0) ????????{ ????????????HT[c].weight=1; ????????????if(HT[c].lchild==0??HT[c].rchild==0) ????????????{ ????????????????HC[c]=(char?*)malloc((cdlen+1)*sizeof(char)); ????????????????cd[cdlen]=\0; ????????????????strcpy(HC[c],cd); ????????????} ????????????if(HT[c].lchild!=0) ????????????{ ???????

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档