ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:18.38KB ,
资源ID:22358029      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22358029.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(哈夫曼编解码完整c程序代码文档格式.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

哈夫曼编解码完整c程序代码文档格式.docx

1、21 15 47 57 1 5 20 N O P Q R S T U V W X Y Z 63 48 51 80 23 8 18 16 完整代码如下:#includeiostreamstring#define N 100int *w;char *c,stackN,codeNN;int s1,s2;typedef struct HuffmanTree int weight; int parent; int lchild; int rchild;HuffmanTree,*Huff;void menu(void);void Select(struct HuffmanTree HT,int i);vo

2、id HuffmanTree(Huff &HT,int *w,int n);void visite(Huff HT,int i,int flag,int rear);void translatef(char *scource,char *save,int n);bool uncodef(FILE *fp1,FILE *fp2,Huff HT,int n);int inputHuff();void screanio(int n);void fileio(int n);int initHuff();void Print_tree(int n,Huff HT);void Convert_tree(H

3、uff HT,unsigned char T100100,int tt100100,int s,int *i,int j);void decoding(int n);void coding(int n);void main() int n=0; menu(); Huff HT; char state; do std:coutstate;fflush(stdin); /读取状态 switch(state) caseIn=inputHuff();HuffmanTree(HT,w,n);std:nHuffmanTree 初始化完毕nbreak; caseCcoding(n);Ddecoding(n)

4、;PPrint_tree(n,HT);Q while(state!=);void menu() /显示菜单函数 std:=HuffmanCoding=ninput tt donI ttInit_HUffTreen /初始化huffmantreeC ttCodingn /对ToBeTran.txt文件中的字符进行编码到CodeFile.txt中D ttUnCodingn /对CodeFile.txt中的01序列进行解码到TextFile.txtP ttPrintTreen /打印哈夫曼树Q ttquitn请初始化哈夫曼树再执行后面的操作nint inputHuff() /输入各个字母及其权值 i

5、nt i=1,n=0; int ww28; char cc28; while(1)input the letter(input # to stop): cci=std:cin.get(); if(cci=) break;input the weight:wwi; n+; i+; w=(int *)malloc(sizeof(int)*(n+1); c=(char *)malloc(sizeof(char)*(n+1); for(i=0;in+1;i+) wi=wwi; ci=cci; return n;HT,int *w,int n) /初始化哈夫曼树 int m,i; m=n*2-1; HT

6、=(struct HuffmanTree *)malloc(sizeof(struct HuffmanTree)*(m+1); HT0.lchild=0; HT0.parent=0; HT0.rchild=0; HT0.weight=0; for(i=1;m; HTi.weight=i=n?wi:0; HTi.lchild=HTi.rchild=HTi.parent=0; for(i=n+1;=m; Select(HT,i); HTi.lchild=s1; HTi.rchild=s2; HTi.weight=HTs1.weight+HTs2.weight; HTs1.parent=HTs2.p

7、arent=i;void Select(struct HuffmanTree HT,int i) /在HT1.i-1中选择parent为0且weight为最小的两个结点 int j; for(j=1;j=HTj.weight) s2=s1; s1=j; if(HTs2.weightHTj.weight&j!=s1) s2=j; if(s1=s2)s2=j; void Print_tree(int n,Huff HT) /以凹入法的形式打印树 unsigned char T100100; int tt100100; int i,j,m=0; FILE *fp; Convert_tree(HT,T

8、,tt,0,&m,2*n-1); /将内存中的赫夫曼树转换成凹凸表形式的树,存于数组T中 if(fp=fopen(treeprint.txt,wb+)=NULL) printf(Open file treeprint.txt error!n以凹凸表形式打印已建好的赫夫曼树:=2*n-1;i+) for (j=0;Tij!=0;j+) if(Tij= ) printf( fputc(Tij,fp); else printf(%d,ttij);fprintf(fp,%dnnn fclose(fp);n此字符形式的哈夫曼树已写入文件treeprint.txt中.nnn文件treeprint.txt的

9、打开方式要为写字板,若打开方式为记事本,则无法显示凹凸表的形式nvoid Convert_tree(Huff HT,unsigned char T100100,int tt100100,int s,int *i,int j) /将内存中的赫夫曼树转换成凹凸表形式的树,存于数组T中 int k,l; l=+(*i); for(k=0;k=50) k=0; putchar(n p=fgetc(fp1);bool uncodef(FILE *fp1,FILE *fp2,Huff HT,int n)/通过对树的访问,把文件中01序列转换成一个字母输出。本函数需循环调用,当读到时返回false if(!

10、fp1|!fp2) printf(error exit(0); if(HTn.lchild=0) fputc(cn,fp2); return true; else if(p=EOF) return false; if(p= uncodef(fp1,fp2,HT,HTn.lchild); else if(p= uncodef(fp1,fp2,HT,HTn.rchild); return true;/*以下在初始化哈夫曼树时复制粘贴可用,注意第一个为空格,weight为186,复制粘贴时要包括它.输入以#号结束186A64B13C22D32EF21G15H47I57J1K5LM20NO63PQR48S51T80U23V8W18XY16Z#*/

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1