欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!

沃文网

换一换
首页 沃文网 > 资源分类 > DOC文档下载
 

数据结构课程设计哈夫曼编码译码器

  • 资源ID:20037       资源大小:130.66KB        全文页数:14页
  • 资源格式: DOC        下载权限:游客/注册会员/VIP会员    下载费用:10积分 【人民币10元】
快捷注册下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: QQ登录   微博登录  
下载资源需要10积分 【人民币10元】
邮箱/手机:
温馨提示:
支付成功后,系统会自动生成账号(用户名和密码都是您填写的邮箱或者手机号),方便下次登录下载和查询订单;
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载资源
 
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,既可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

数据结构课程设计哈夫曼编码译码器

西安郵電學院数据结构课程设计报告题目1哈夫曼编码/译码器题目2学生信息管理系统系部名称通信工程系专业名称通信工程班级****学号*****学生姓名****指导教师*****时间2009年12月16日至2009年12月25日题目1.哈夫曼编码/译码器一、课程设计目的通过对哈夫曼编码/译码器的实现,熟悉了解Huffman树的创建过程以及存储结构,对Huffman编码/译码过程及原则有了更深层次的认识,锻炼了动手能力,使知识更好的学以致用,为解决数据压缩问题提供方法。二、课程设计内容通过统计文件中各字符的出现频率,建立Huffman树,再通过建立的已经Huffman的树,对文件中各字符进行编码,将结果存入新的文件中,然后从文件中读取Huffman编码,进行解码,结果存入新的文件中,并与源文件进行比较。三、需求分析1统计字符频率存文件中读入字符,并对各字符出现频率进行统计;2建立Huffman树将各字符出现的频率作为权值,建立Huffman树;3Huffman编码通过已经建立的Huffman树,对个各字符进行编码,并存入新的文件中;4.译码读取存放Huffman编码的文件,对文件中编码进行译码,把译码结果存入新的文件中;5.结果验证将译码结果与原文件内容进行比较;四、概要设计1.系统结构图(功能模块图)开始main()统计字符频率创建Huffman树对文件编码对编码译码出现次数字符名称初始化结点赋值Huffma编码存入文件读取编码存入文件对编码译码对编码译码成功失败2功能模块说明1统计字符频率定义结构体typedefstructstrchardata;charnum;str;其中data域存放字符名称,num域存放字符出现频率,读取文件ywq1.txt,通过循环比较将结果赋入S2128中;2创建Huffman树定义结构体typedefstructchardata;intweight;intparent;intlchild;intrchild;HTNode,HuffmanTreeM1;作为Huffman树存储节点类型,调用CrtHuffmanTree函数,初始化各节点均为0;然后将存储字符频率的数组S2的值赋值给各节点,字符出现频率作为权值,创建Huffman树;3对文件编码定义结构体typedefstructchardata;charbitsN1;CodeNode,HuffmanCodeN;作为HuffmanCode的存储类型,调用CrtHuffmanCode函数,从叶子节点向上回溯,是lchild则赋值0,是rchild则赋值为1,对各字符编码,再调用WriteToFile函数,将结果写入文件ywq2.txt中;4对文件译码读取编码文件ywq2.txt中数据,调用DecodHuffmanCode函数,从根节点开始,读取1,走向rchild,读取0,走向lchild,直到叶子节点,将叶子节点data域的值写入文件ywq3.txt中;五、详细设计及运行结果1读文件统计字符频率read函数中实现源文件ywq1.txt打开源文件ywq1.txt读文件内的字符,初始化数组s1文件是否结束将字符存入数组S1ch.num读下一个字符给数组末尾加上结束标志“0”关闭文件是否开始结束运行结果2创建Huffman树,CrtHuffmanTree运行结果初始化结构体数组htCrtHuffmanTree有n棵二叉树n1选权值最小2个二叉树权值相加得新二叉树n-1n1建立Huffman树结束3Huffman编码,CrtHuffmanCode;运行结果编码文件ywq2.txtCrtHuffmanCode根cd--start0cd--start1否LchildRchildcdstart赋给hci.bits是结束对应字符编码写入文件ywq2.txt3译码,DecodHuffmanCode运行结果DecodHuffmanCode打开文件ywq2.txt读取字符ch文件结束否否找根节点ch0,找lchild;ch1,找rchild;叶子节点是是保存ywq3.txt是结束文件ywq3.txt4结果验证比较源文件ywq1.txt与译码文件ywq3.txt可知,译码结果与源文件一致。运行结果Compare读取ywq1.txt中的字符,存入s1,并输出,读取ywq3.txt中的字符,存入s2,并输出,siis2i是i,i1i,s2i.data,s2i.num;printf共d种字符n,k-1;returnk;voidSelectMinHuffmanTreeht,inti,int*p1,int*p2//查找哈夫曼链表中两个权值最小的节点intj,min1,min2;min1min2-1;forj1;jn,i,hci.data,hci.bits;voidWriteToFileHuffmanCodehc,intn//将编码结果存储在文件文件ywq2.txt中FILE*fp1,*fp2;charch;inti;iffp1dywqywq1.txt,rNULLprintfn文件不存在;exit1;iffp2dywqywq2.txt,wNULLprintfn文件不存在;exit1;chfgetcfp1;printfn.编码结果为;whilechEOFfori1;in;iifchhci.datahci.bits,fp2;printfs,hci.bits;chfgetcfp1;fclosefp1;fclosefp2;printfn;voidDecodHuffmanCodeHuffmanTreeht,intn//码结果进行译码,并将结果存储在文件ywq3中FILE*fp1,*fp2;charch;intp,k;iffp1dywqywq2.txt,rNULLprintfn文件不存在;exit1;iffp2dywqywq3.txt,wNULLprintfn文件未能创建;exit1;pk2*n-3;chfgetcfp1;printf.译码为;whilechEOFifch0phtp.lchild;elseifch1phtp.rchild;ifhtp.data0printfc,htp.data;fputchtp.data,fp2;pk;chfgetcfp1;printfn;fclosefp1;fclosefp2;voidcompareintkFILE*fp1,*fp2;chars1N,s2N;inti1,j1;printfnn.编译前后结果的比较;iffp1dywqywq1.txt,rtNULLprintfn打开文件失败n;exit1;printfnn原文件ywq1.txt中的字符为;fori1;s1ifgetcfp1EOF;iprintfc,s1i;fclosefp1;iffp2dywqywq3.txt,rtNULLprintfn打开文件失败n;exit1;printfn文件ywq3.txt中的字符为;fori1;s2ifgetcfp2EOF;iprintfc,s2i;fclosefp2;whilejkifs1js2jj;elseprintfn编码失败n;break;ifjkprintfn前后数据一致,编码成功。。。O_O。。。n;voidmaininti,k;intj1;HuffmanTreeht;HuffmanCodehc;strs2128;systemcolorF5;printfn-------------------------------哈夫曼编码译码器---------------------------------;kreads2;getch;CrtHuffmanTreeht,s2,k;CrtHuffmanCodeht,hc,k;WriteToFilehc,k;getch;printfnn;printf.建立的哈夫曼树为;printfnnumbertdatatweighttlchildtrchildtparent;fori1;ik;iprintfndcdddd,i,hti.data,hti.weight,hti.lchild,hti.rchild,hti.parent;printfnn;DecodHuffmanCodeht,k;getch;comparek;printfnn按任意键退出...n;忽略此处..

注意事项

本文(数据结构课程设计哈夫曼编码译码器)为本站会员(星星008)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2017-2019 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922