哈夫曼编译码器教学规划报告(完全版)_第1页
哈夫曼编译码器教学规划报告(完全版)_第2页
哈夫曼编译码器教学规划报告(完全版)_第3页
哈夫曼编译码器教学规划报告(完全版)_第4页
哈夫曼编译码器教学规划报告(完全版)_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、XXX 学院 本科数据结构课程设计总结报告设计题目 : 实验一、哈夫曼编 / 译码器学生姓名 :XXX系别:XXX专业:XXX班级:XXX学号:XXX指导教师 :XXXXXX2012年6月21日XXX学院课程设计任务书题目、赫夫曼编译码器专业、班级XXX 学号 XXX 姓名 XXX主要内容、基本要求、主要参考资料等:1. 主要内容利用哈夫曼编码进行信息通信可大大提高信道利用率,缩短信息传输时间,降低传输成本。要求在发送端通过一个编码系统对待传数据预先编码;在接收端将传 来的数据进行译码(复原)。对于双工信道(既可以双向传输信息的信道),每端 都需要一个完整的编/译码系统。试为这样的信息收发站写

2、一个哈夫曼的编/译码 系统。2. 基本要求系统应具有以下功能:(1)C:编码(Coding )。对文件tobetrans中的正文进行编码,然后将结果存入文件codefile中,将以此建好的哈夫曼树存入文件HuffmanTree 中(2)D :解码(Decoding )。利用已建好的哈夫曼树将文件 codefile中的代码进行译码,结果存入textfile中。(3) P:打印代码文件(Print )。将文件codefile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码文件写入文件code print中。(4)T:打印哈夫曼树(Tree Printing )。将已在内存中的哈夫曼树

3、以直观的方 式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件treeprint 中。3. 参考资料:数据结构(C语言版)严蔚敏、吴伟民编著;数据结构标准教程胡超、闫宝玉编著完成期限:2012年6月21日指导教师签名:课程负责人签名:2012年 6月21日、设计题目(任选其一)实验一、哈夫曼编/译码器实验目的1巩固和加深对数据结构的理解,提高综合运用本课程所学知识的能力;2深化对算法课程中基本概念、理论和方法的理解;3巩固构造赫夫曼树的算法;4设计试验用程序实验赫夫曼树的构造。三、运行环境(软、硬件环境)Windows xp sp3 ,Visual C+ 6.0 英文版四、算

4、法设计的思想(1 )初始化赫夫曼树,输入文件tobetra ns.txt中各字符及其权值,并保存于 hfmtree.txt 文件中(2)编码(Coding )。对文件tobetrans中的正文进行编码,然后将结果存入 文件codefile中(3)D :解码(Decoding )。利用已建好的哈夫曼树将文件 codefile中的代码进行译码,结果存入textfile中。(4)P:打印代码文件(Print )。将文件codefile 以紧凑格式显示在终端上,code print 中。每行50个代码。同时将此字符形式的编码文件写入文件(5)T:打印哈夫曼树(Tree Printing )。将已在内存

5、中的哈夫曼树以直观的方treeprint 中。式显示在终端上,同时将此字符形式的哈夫曼树写入文件五、流程图赫夫曼编/译码器打印编码六、算法设计分析1.赫夫曼树节点的数据类型定义为:typ edef struct/赫夫曼树的结构体/权值char ch;int weight;int paren t,lchild,rchild; HTNode,*HuffmanTree;2. void HuffmanCoding(HuffmanTree&char *,int *,int);建立赫夫曼树的算法,此函数块调用了 Select()函数。void select(HuffmanTree HT,int j

6、,int *x,i nt *y);从已建好的赫夫曼树中选择 pare nt为0, weight最小的两个结点。3 .利用已建好的哈夫曼树从文件hfmtree.txt中读入,对文件中的正文进行编码,然后将结果存入文件codefile.txt中。4. cod ing编码功能:对输入字符进行编码5. Decod ing译码功能:利用已建好的哈夫曼树将文件codefile.txt中的代码进行译码,结果存入文件textfile.txt 中。6. PrintO打印功能函数:输出哈夫曼树以及对应的编码。七、源代码/#i nclude <stdio.h>#i nclude <stdlib.h

7、>#i nclude <stri ng.h>/定义赫夫曼树结点的结构体typ edef structvoid Prin t_code();/打印译码好的代码char ch;/增加一个域,存放该节点的字符int weight;int paren t,lchild,rchild;/指向赫夫曼编码的指针HTNode,*Huffma nTree;typ edef char *Huffma nCode;void tip s();/打印操作选择界面/建立赫夫曼/从已建好的赫夫曼void Huffma nCodi ng(Huffma nTree &,char *,i nt *,i

8、nt);树的算法void select(Huffma nTree HT,i nt j,i nt *x,i nt *y);树中选择pare nt为0,weight最小的两个结点 void In it();void Codi ng();/编码void Decod in g();/译码void Print_tree(); / 打印哈夫曼树/译码int Read_tree(Huffma nTree &); /从文件中读入赫夫曼树void fin d(Huffma nTree &HT,char *code,char *text,i nt i,i nt m);时根据01字符串寻找相应叶子节

9、点的递归算法/将内void Co nvert_tree(u nsig ned char T100100,i nt s,i nt *i,i nt j);存中的赫夫曼树转换成凹凸表形式的赫夫曼树Huffma nTree HT;/全局变量int n=0;/全局变量,存放赫夫曼树叶子结点的数目int main() char select;while(1)tip s();sca nf("%c",&select);switch(select) /选择操作,根据不同的序号选择不同的操作case '1':I nit();break;case 2:Codi ng();

10、break;case 3:Decodi ng();break;case '4': Prin t_code();break;case '5':Prin t_tree();break;case 'O':exit(1);default :prin tf("I nput error!' n");getchar();return 0;void tips()/操作选择界面pnntf("n");printf("-请选择操作pnntf("n");printf("pnntf(&

11、quot;1初始化赫夫曼树n");pnntf("2编码n");pnntf("3译码n");pnntf("4打印代码文件-n");pnntf("5打印赫夫曼树n");pnntf("0退出n");pnntf("n");-n");n");/初始化函数,输入n个字符及其对应的权值,根据权值建立哈夫曼树,并将其存于文件hfmtree中void In it()FILE *fp;char character52;/存放n个字符printf("n输入字

12、符个数n:");sca nf("%d",&n);/输入字符集大小printf("输入%d个字符及其对应的权值:n",n);for (i=0;i vn ;i+)char b=getchar();sca nf("%c",&characteri);sca nf("%d",&wi);/输入n个字符和对应的权值Huffma nCodi ng(HT,character,w, n);/建立赫夫曼树if(fp=fo pen ("hfmtree.txt","w"

13、;)=NULL)printfC'Open file hfmtree.txt error!n");for (i=1;i<=2* n-1;i+)if(fwrite(&H Ti,sizeof(HTNode),1,fp)!=1)/将建立的赫夫曼树存入文件 hfmtree.txt 中prin tf("File write error!n");prin tf("n赫夫曼树建立成功,并已存于文件hfmtree.txt 中 n");fclose(fp);/建立赫夫曼树的算法 void Huffma nCodi ng(Huffma nTre

14、e &HT,char *character,i nt *w,i nt n)Huffma nTree p;if(nv=1) return;m=2* n-1;HT=(Huffma nTree)malloc(m+1)*sizeof(HTNode);for(p=HT+1,i=1;iv=n;+i,+p,+character,+w) p->ch=*character; p->weight=*w; p->paren t=0; p->lchild=0; p->rchild =0; for(;i<=m;+i,+p) p->ch=0;p->weight=0;

15、p->parent=0;p->lchild=0;p-> rchild=0; for(i=n+1;i<=m;+i)select(HT,i-1, &x,&y);HTx. paren t=i;HTy. paren t=i;HTi.lchild=x;HTi.rchild=y;HTi.weight=HTx.weight+HTy.weight;/从HT1到HTj中选择pare nt为0 , weight最小的两个结点,用 x和y返回其序号void select(Huffma nTree HT,i nt j,i nt *x,i nt *y) int i;/查找weig

16、ht最小的结点 for (i=1;i<=j;i+)if (HTi. pare nt=0)*x=i;break; for (;i<=j;i+)if (HTi. paren t=0)&&(HTi.weightvHT*x.weight)*x=i;HT*x. paren t=1;/查找weight次小的结点 for (i=1;i<=j;i+)if (HTi. pare nt=0)*y=i;break; for (;iv=j;i+)if (HTi. paren t=0)&&( i!=*x )&&(HTi.weightvHT*y.weigh

17、t)*y=i;II对文件tobetrans中的正文进行编码,然后将结果存入文件codefile中 void Codi ng()FILE *fp,*fw;int i,f,c,start;char *cd;Huffma nCode HC;if(n=0)n=Read_tree(HT);II 从文件hfmtree.txt中读入赫夫曼树,返回叶子结点数II求赫夫曼树中各叶子节点的字符对应的的编码,并存于HC指向的空间中HC=(Huffma nCode)malloc( n+1)*sizeof(char*);cd=(char *)malloc( n*sizeof(char);cdn-1='0'

18、;for(i=1;iv=n ;+i)start=n-1;for(c=i,f=HTi. pare nt;f!=0;c=f,f=HTf. parent)if(HTf.lchild=c)cd-start='0'else cd-start='1'HCi=(char *)malloc( n-start)*sizeof(char);strc py(HCi, &cdstart);free(cd);if(fp=fo pen ("tobetra ns.txt","rb")=NULL)printf("Open file to

19、betra ns.txt error!n");if(fw=fo pen ("codefile.txt","wb+")=NULL)prin tf("O pen file codefile.txt error!n");char temp;fsca nf(fp,"%c", &tem p);/从文件读入第一个字符while(!feof(fp)for(i=1;iv=n ;i+)if(HTi.ch=te mp) break;/在赫夫曼树中查找字符所在的位置for(i nt r=O;HCir!='O&#

20、39;r+)/将字符对应的编码存入文件fputc(HCir,fw);fsca nf(fp,"%c", &tem p);/从文件读入下一个字符fclose(fw);fclose(fp);printf("n 已将文件 hfmtree.txt成功编码,并已存入codefile.txt 中! nn");/将文件codefile中的代码进行译码,结果存入文件textfile中 void Decod in g()FILE *fp,*fw;int m,i;char *code,*text,* p;if(n=0)n=Read_tree(HT);/ 从文件hfmt

21、ree.txt中读入赫夫曼树,返回叶子结点数if(fp=fo pen ("codefile.txt","rb")=NULL)prin tf("O pen file codefile.txt error!n");if(fw=fo pen ("textfile.txt","wb+")=NULL)prin tf("O pen file textfile.txt error!n");code=(char *)malloc(sizeof(char);fsca nf(fp,"%

22、c",code);/从文件读入一个字符for(i=1;!feof(fp);i+)code=(char *)realloc(code,(i+1)*sizeof(char);/增加空间fsca nf(fp,"%c",&codei);/从文件读入下一个字符codei-1='0'/ codefile.txt文件中的字符已全部读入,存放在 code数组中text=(char *)malloc(100*sizeof(char);p=text;m=2* n-1;/从根节点的左子树去找/从根节点的右子树去找if(*code='0')fin

23、d(HT,code,text,HTm.lchild,m);elsefin d(HT,code,text,HTm.rchild,m);for(i=0; pi!='O'i+)/把译码好的字符存入文件textfile.txt中fputc( pi,fw);fclose(fp);fclose(fw);printf("n 已将 codefile.txt 文件成功译码,兵已存入 textfile.txt 文件! nn");/将文件codefi1e以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码文件写入文件code print中。void Prin t_cod

24、e()FILE *fp,*fw;char temp;int i;if(fp=fo pen( "codefile.txt","rb")=NULL)prin tf("O pen file codefile.txt error!n");if(fw=fo pen ("code prin t.txt","wb+")=NULL)printfC'Open file code prin t.txt error!n");printf("n 文件 codefile 显示如下:n"

25、;);fsca nf(fp,"%c", &tem p);/从文件读入一个字符for (i=1;!feof(fp);i+)prin tf("%c",tem p);if(i%50=0) prin tf("n");fputc(temp,fw);/ 将该字符存入文件 codeprint.txt中fsca nf(fp,"%c", &tem p);/从文件读入一个字符printf("nn已将此字符形式的编码写入文件codeprint.txt中! nn");fclose(fp);fclose(

26、fw);/将已在内存中的哈夫曼树显示在屏幕上,并将此字符形式的哈夫曼树写入文件 tree print 中。void Prin t_tree()un sig ned char T100100;int i,j,m=0;FILE *fp;if(n=0)n=Read_tree(HT); /从文件hfmtree.txt中读入赫夫曼树,返回叶子结占数/将内存中的赫夫曼树转换成凹凸表形式丿、人Co nvert_tree(T,0,&m,2* n-1);的树,存于数组T中if(fp=fo pen ("tree prin t.txt","wb+")=NULL)pnn

27、tf("Open file tree prin t.txt error!n");prin tf("n打印已建好的赫夫曼树:n");for(i=1;i<=2* n-1;i+)for (j=0;Tij!=0;j+)if(Tij=' ') printf(" ");fputc(Tij,fp);elseprin tf("%d",Tij);fpri ntf(fp,"%dn",Tij);prin tf("n");fclose(fp);printf("n已将该

28、字符形式的哈夫曼树写入文件treeprint.txt 中! nn");II从文件hfmtree.txt中读入赫夫曼树,返回叶子节点数int Read_tree(Huffma nTree &HT)FILE *fp;int i,n;HT=(Huffma nTree)malloc(sizeof(HTNode);if(fp=fo pen ("hfmtree.txt","广)=NULL)printfC'Open file hfmtree.txt error!n");/增加空间for (i=1;!feof(fp);i+)/读入一个节点信息H

29、T=(Huffma nTree)realloc(HT,(i+1)*sizeof(HTNode);fread(&H Ti,sizeof(HTNode),1,fp);fclose(fp);n=(i-1)/2;return n;/译码时根据01字符串寻找相应叶子节点的递归算法void fin d(Huffma nTree &HT,char *code,char *text, int i,i nt m)if(*code!='0')/若译码未结束code+;if(HTi.lchild=O&&H Ti.rchild=O)/若找到叶子节点*text=HTi.c

30、h; /将叶子节点的字符存入text中text+;if(*code='0')fin d(HT,code,text,HTm.lchild,m);/从根节点的左子树找elsefin d(HT,code,text,HTm.rchild,m);/从根节点的右子树找else /如果不是叶子节点/从该节点的左子树去找/从该节点的右子树去找if(*code='0')fin d(HT,code,text,HTi.lchild,m);elsefin d(HT,code,text,HTi.rchild,m);else*text='0' /译码结束/将文件中的赫夫曼树

31、转换成凹凸表形式的赫夫曼树打印出来 void Con vert_tree(u nsig ned char T100100,i nt s,i nt *i,i nt j) int k,l;l=+(*i);for(k=0;k<s;k+)Tlk=''Tlk=HTj.weight;if(HTj.lchild)Con vert_tree(T,s+1,i,HTj.lchild);if(HTj.rchild)Co nvert_tree(T,s+1,i,HT|j.rchild);Tl+k='O'/八、运行结果分析截图说明:1、运行后界面如图(1):中 U *Cz VJDCU

32、MC-dI J lU-Lll Sett XIl£.s. 口 we'呈MjlDcl3U£a._ CXE,图(1)选择要选择的操作序号可以运行各个步骤;2、初始化赫夫曼树:输入tobetrans.txt中各元素及其出现频率,如图(2)图(2)3、编码及译码,如图(3)图(3)4、打印编码文件,如图(4)图(4)5、打印赫夫曼树,如图(5)叮二卩三谴好RJ勰夫5S啊- 1Be,le4己將该宇雅划式釣皓夫曼榔三入文井t«E:申如t.t祇中I丄钊化閒去曼啊-H编码.J详闵.4疔和代彳-丈斗* 图(5)6、各步骤所存的文件内容如图(6)图(6)九、收获及体会课程设计是

33、让我们充分利用我们专业课程所学知识的机会, 也是我们迈向社 会,从事工作前一个必不少的过程。 通过这次课程设计,我深深体会到将知识运 用到实践中的重要作用。我这两天的课程设计,是让我学会脚踏实地迈开这一步, 也是为明天能稳健地在社会大潮中奔跑打下坚实的基础。我的课程设计题目是赫夫曼编译码器。 最初做这个程序的时候,让我觉得完成这次程序设计真的是太难了,然后我查阅了课本,并去图书馆借了资料,在写 这个程序的时候也参考了网上的设计流程, 写完刚运行时出现了很多问题。 尤其 是编码错误,导致内存无法 read,通过同组人员的交流请教,逐渐明白过来,然后经过不知道多少次修改才顺利运行。本次试验也让我明

34、白了理论与实际相结合的重要性,并提高了自己组织数据及编写大型程序的能力,培养了基本的、良好的程序设计技能以及合作能力。通过对各个步骤各个流程的控制,逐渐让我产生了兴趣,在实际编写过程中,和同学们相互讨论让我学到的不仅仅是一些解决问题的方法,更是解决问题的思想。课程设计本身也是一种相互学习的过 程,/#in elude <stdio.h>#in elude <stdlib.h>/为exit()提供原型#in elude <stri ng.h>/哈夫曼树结点的结构typedef struct char ch;/该字符域用于存放节点的关键字int weight;i

35、nt paren t, lchild, rchild;HTNode , *HuffmanTree ;/动态分配数组存储哈夫曼树typedef char * HuffmanCode/动态分配数组存储哈夫曼编码表void Menu();/显示菜单void HuffmanCoding(HuffmanTree &HT, char *character, int * w, int n);/建立哈夫曼树void select( HuffmanTree HT, int j, int *x, int *y);/从已建好的赫夫曼树中选择pare nt为0,weight最小的两个结点 void Init(

36、);voidCodi ng();/编码voidDecod in g();/译码voidP ri nt_code();/打印译码好的代码voidP ri nt_tree();/打印哈夫曼树int Read_tree( HuffmanTree &); /从文件中读入赫夫曼树void find( HuffmanTree &HT, char *code, char *text, int i, int m);/ 译码时根据 01 字符串寻找 相应叶子节点的递归算法void Convert_tree( unsigned char T100100, int s, int *i, int j)

37、;/ 将内存中的赫夫曼树转换成 凹凸表形式的赫夫曼树HuffmanTree HT; / 全局变量intn = 0;/全局变量,存放赫夫曼树叶子结点的数目intmai n()char select;while (1)Men u();scanf( "%c" , &select);switch (select) /选择操作,根据不同的序号选择不同的操作case'1' :lnit();break ;case2 :Coding();break ;case3 :Decoding();break ;case'4':Print_code();brea

38、k ;case'5':Print_tree();break ;case'O':exit(1);default :printf( "Input error!n");getchar();return 0;voidMenu()/操作选择界面printf("n");printf("-请选择操作-n")printf("n")Jprintf("n"printf("1初始化赫夫曼树-n");printf("2编码n");printf(&q

39、uot;3译码-n");printf("4打印代码文件-n");printf("5打印赫夫曼树n");printf("0退岀-n");printf("n")I);/初始化函数,输入n个字符及其对应的权值,根据权值建立哈夫曼树,并将其存于文件hfmtreevoid Init()FILE *fp;int i, n, w52;/数组存放字符的权值char character52;/存放n个字符printf( "n输入字符个数 n:");scanf( "%d" , &

40、;n);/输入字符集大小printf("输入%d个字符及其对应的权值:n" , n);for(i = 0; ivn; i+)char b = getchar();scanf( "%c" , &character);scanf( "%d" , &wi);/输入n个字符和对应的权值Huffma nCod in g(HT, character, w, n);/建立赫夫曼树if (fp = fopen( "hfmtree.txt" , "w")=NULL)printf( "Op

41、en file hfmtree.txt error!n");for (i = 1; i <= 2 * n - 1; i+)if (fwrite(&HTi,sizeof (HTNode ), 1, fp) != 1)/ 将建立的赫夫曼树存入文件hfmtree.txt 中printf( "File write error!n" );printf( "n赫夫曼树建立成功,并已存于文件 hfmtree.txt中n");fclose(f p);/构造哈夫曼树的算法void HuffmanCoding(HuffmanTree &HT,

42、 char *character,int * w, int n)/w存放n个字符的权值(均0 ),构造哈夫曼树HTint m, i, x, y;Huffma nTree p;if (n <= 1) return ;m = 2 * n - 1;HT = ( HuffmanTree )malloc(m + 1) * sizeof (HTNode);for(p = HT + 1, i = 1; i <= n; +i, +p, +character, +w)p->ch = Character; p->weight = *w; p->p are nt = 0; p->

43、lchild = 0; p-> rchild = 0;for(;i <= m; +i, +p) p->ch = 0; p->weight = 0; p->parent = 0; p->lchild = 0;p->rchild = 0; for (i = n + 1; i <= m; +i)select(HT, i - 1, &x, &y);HTx. parent = i; HTy. pare nt = i;HTi.lchild = x; HTi.rchild = y;HTi.weight = HTx.weight + HTy.we

44、ight;/从HT1到HT j中选择pare nt为0 , weight最小的两个结点,用x和y返回其序号void select( HuffmanTreeHT, int j, int *x, int *y)int i;/查找weight最小的结点for (i = 1; i <= j; i+)if (HTi. pare nt = 0)*x = i; break ;for (; i <= j; i+)if (HTi. pare nt = 0) && ( HTi.weightv HT*x.weight)HT*x. pare nt = 1;/查找weight次小的结点for

45、 (i = 1; i <= j; i+)if (HTi. pare nt = 0)*y = i; break ;for (; i <= j; i+)if (HTi. pare nt = 0) && (i != * x) && ( HTi.weightv HT*y.weight)y = i;/对文件tobetrans中的正文进行编码,然后将结果存入文件codefile中 void Coding()FILE *fp, *fw;int i, f, c, start;char *cd;Huffma nCode HC;if (n = 0)n = Read_tr

46、ee(HT); /从文件hfmtree.txt中读入赫夫曼树,返回叶子结点数/求赫夫曼树中各叶子节点的字符对应的的编码,并存于HC指向的空间中HC = ( HuffmanCode )malloc(n + 1) * sizeof (char *);cd = ( char *)malloc(n * sizeof (char);cdn - 1 ='0'for (i = 1; i <= n; +i)start = n - 1;for (c = i, f = HTi. parent; f != 0; c = f, f = HTf .p are nt)if (HTf.lchild =

47、 c)cd-start ='O'else cd-start ='1'HCi = ( char *)malloc(n - start) * sizeof (char);strc py(HCi, & cdstart);free(cd);if (fp = fopen("tobetrans.txt", "rb" ) = NULL )prints "Open file tobetrans.txt error!'n");if (fw = fopen( "codefile.txt"

48、 , "wb+")=NULL)printf( "Open file codefile.txt error!'n");char temp;fscanffp, "%c" , &temp);/从文件读入第一个字符while (!feof(fp)for(i = 1; i <= n; i+)if (HTi.ch = temp)break ;/在赫夫曼树中查找字符所在的位置for(int r = 0; HCir !='0'叶+)/将字符对应的编码存入文件fputc(HCir, fw);fscanffp, &q

49、uot;%c" , &temp);/从文件读入下一个字符fclose(fw);fclose(f p);printf( "n 已将文件 hfmtree.txt成功编码,并已存入codefile.txt中! nn");/将文件codefile中的代码进行译码,结果存入文件textfile中void Decod in g()FILE *fp, *fw;int m, i;char *code, *text, * p;if (n = 0)n = Read_tree(HT); /从文件hfmtree.txt中读入赫夫曼树,返回叶子结点数if (fp = fopen(

50、"codefile.txt" , "rb" ) = NULL);printf( "Open file codefile.txt error!'n"if (fw = fopen( "textfile.txt" , "wb+" ) = NULL);printf( "Open file textfile.txt erroH'n"code = ( char *)malloc( sizeof (char);fscanf(fp, "%c" , code

51、);/从文件读入一个字符for (i = 1; !feof(fp); i+)code = ( char *)realloc(code, (i + 1) * sizeof (char);/ 增加空间fscanf(fp, "%c" , &codei);/从文件读入下一个字符codei - 1 ='0'/ codefile.txt文件中的字符已全部读入,存放在code数组中text = ( char*)malloc(100 * sizeof (char);p = text;m = 2 * n - 1;if (*code ='0')elsef

52、in d(HT, code, text, HTm.lchild, m);/从根节点的左子树去找fin d(HT, code, text, HTm.rchild, m);/从根节点的右子树去找for (i = 0; pi !='0' ; i+)/ 把译码好的字符存入文件textfile.txt 中fputc( pi, fw);fclose(f p);fclose(fw);printf( "n 已将 codefile.txt文件成功译码,兵已存入textfile.txt 文件! nn");/将文件codefi1e以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码文件写入文件 code print 中。void Print_codeOFILE *fp, *fw;char temp;int i;if (fp = fopen( "codefile.txt" , "rb" ) = NULL)printf( "Open file codefile.txt error!'n");if (fw = fopen("codeprint.txt", "wb+" ) = NULL)prints "Open file codepri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论