电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

哈夫曼树c语言代码哈夫曼树实验报告

哈夫曼树c语言代码哈夫曼树实验报告_第1页
哈夫曼树c语言代码哈夫曼树实验报告_第2页
哈夫曼树c语言代码哈夫曼树实验报告_第3页
哈夫曼树 c 语言代码哈夫曼树实验报告(付原 c 语言程序)需求分析:从终端读入一串字符,利用建立好的哈夫曼树对其进行编码,储存到文件当中去,然后从文件读入哈夫曼编码,针对每个字母对其进行译码,翻译为原来的信息。二、概要设计程序分为以下几个模块:1、从终端读入字符集大小,n 个字符和 n 个权值,建立哈夫曼树,写入文件2、对 hfmTree 进行编码,建立 hfm 编码表。hfmTree 中去。3、从文件 ToTran 读入信息,根据 hfm 编码表对其进行 hfm 编码,将编码后的信息写入文件 Codefile 中去4、对 Codefile 文件反向译码,结果储存在 Textfile5、将建立的 hfmTree 打印在终端上,并储存于相应的中去。Treeprint文件中去。抽象的数据定义如下:哈夫曼树结构typedefstruct//定义哈夫曼树的结构{intweight;intparent;intlchild;intrchild;////////权值双亲左孩子右孩子}htnode,huffmantree[M+1];建立哈夫曼树voidcrthuffmantree(huffmantreeht,intw[],intn)//初始化哈夫曼树{inti,s1,s2,m;for(i=1;i<=n;i++){ht[i].weight=w[i];ht[i].parent=0;ht[i].lchild=0;ht[i].rchild=0;}m=2*n-1;for(i=n+1;i<=m;i++){ht[i].weight=0;ht[i].parent=0;ht[i].lchild=0;ht[i].rchild=0;}for(i=n+1;i<=m;i++){select(ht,i-1,&s1,&s2);ht[i].weight=ht[s1].weight+ht[s2].weight;ht[s1].parent=i;ht[s2].parent=i;ht[i].lchild=s1;ht[i].rchild=s2;}}typedefchar*huffmancode[N+1];//建立哈夫曼树编码表 voidcrthuffmancode(huffmantreeht,huffmancodehc,intn){char*cd;//新建立一个指针intstart,i,c,p;cd=(char*)malloc(n*sizeof(char))cd[n-1]='\0';//;//分配求一个字符的哈夫曼编码的空间编码结束符for(i=1;i<=n;i++){start=n-1;c=i;p=ht[i].parent;while(p!=0){--start;if(ht[p].lchild==c)cd[start]='0';elsecd[start]='1';c=p;p=ht[p].parent;}hc[i]=(char*)malloc((n-start)*sizeof(char));strcpy(hc[i],&cd[start]);}free(cd);}select(huffmantreeht,intpos,int*s1,int*s2)//取最小和次小权值{intj,m1,m2;m1=m2=maxint;for(j=1;j<=pos;j++){if(ht[j].weight

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

办公文档专营+ 关注
实名认证
内容提供者

大量办公文档,欢迎选择

确认删除?
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群