欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
换一换
首页 沃文网 > 资源分类 > 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树;3.Huffman编码通过已经建立的Huffman树,对个各字符进行编码,并存入新的文件中;4.译码读取存放Huffman编码的文件,对文件中编码进行译码,把译码结果存入新的文件中;5.结果验证将译码结果与原文件内容进行比较;四、概要设计1.系统结构图(功能模块图)开始main()统计字符频率创建Huffman树对文件编码对编码译码出现次数字符名称初始化结点赋值Huffma编码存入文件读取编码存入文件对编码译码对编码译码成功失败2.功能模块说明1统计字符频率定义结构体typedefstructstr{chardata;charnum;}str;其中data域存放字符名称,num域存放字符出现频率,读取文件ywq1.txt,通过循环比较将结果赋入S2[128]中;2创建Huffman树定义结构体typedefstruct{chardata;intweight;intparent;intlchild;intrchild;}HTNode,HuffmanTree[M1];作为Huffman树存储节点类型,调用CrtHuffmanTree函数,初始化各节点均为0;然后将存储字符频率的数组S2的值赋值给各节点,字符出现频率作为权值,创建Huffman树;3对文件编码定义结构体typedefstruct{chardata;charbits[N1];}CodeNode,HuffmanCode[N];作为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文件是否结束将字符存入数组S1[ch].num读下一个字符给数组末尾加上结束标志“\0”关闭文件是否开始结束运行结果2创建Huffman树,CrtHuffmanTree运行结果初始化结构体数组htCrtHuffmanTree有n棵二叉树n1选权值最小2个二叉树权值相加得新二叉树n-1n1建立Huffman树结束3Huffman编码,CrtHuffmanCode;运行结果编码文件ywq2.txtCrtHuffmanCode根cd[--start]‘0’cd[--start]‘1’否LchildRchildcd[start]赋给hc[i].bits是结束对应字符编码写入文件ywq2.txt3译码,DecodHuffmanCode运行结果DecodHuffmanCode打开文件ywq2.txt读取字符ch文件结束否否找根节点ch‘0’,找lchild;ch‘1’,找rchild;叶子节点是是保存ywq3.txt是结束文件ywq3.txt4结果验证比较源文件ywq1.txt与译码文件ywq3.txt可知,译码结果与源文件一致。运行结果Compare读取ywq1.txt中的字符,存入s1,并输出,读取ywq3.txt中的字符,存入s2,并输出,si[i]s2[i]是i,i1i,s2[i].data,s2[i].num;}printf共d种字符\n,k-1;returnk;}voidSelectMinHuffmanTreeht,inti,int*p1,int*p2//查找哈夫曼链表中两个权值最小的节点{intj,min1,min2;min1min2-1;forj1;j\n,i,hc[i].data,hc[i].bits;}voidWriteToFileHuffmanCodehc,intn//将编码结果存储在文件文件ywq2.txt中{FILE*fp1,*fp2;charch;inti;iffp1d\\ywq\\ywq1.txt,rNULL{printf\n文件不存在;exit1;}iffp2d\\ywq\\ywq2.txt,wNULL{printf\n文件不存在;exit1;}chfgetcfp1;printf\n④.编码结果为;whilechEOF{fori1;in;iifchhc[i].data{hc[i].bits,fp2;printfs,hc[i].bits;}chfgetcfp1;}fclosefp1;fclosefp2;printf\n;}voidDecodHuffmanCodeHuffmanTreeht,intn//码结果进行译码,并将结果存储在文件ywq3中{FILE*fp1,*fp2;charch;intp,k;iffp1d\\ywq\\ywq2.txt,rNULL{printf\n文件不存在;exit1;}iffp2d\\ywq\\ywq3.txt,wNULL{printf\n文件未能创建;exit1;}pk2*n-3;chfgetcfp1;printf⑥.译码为;whilechEOF{ifch0pht[p].lchild;elseifch1pht[p].rchild;ifht[p].data0{printfc,ht[p].data;fputcht[p].data,fp2;pk;}chfgetcfp1;}printf\n;fclosefp1;fclosefp2;}voidcompareintk{FILE*fp1,*fp2;chars1[N],s2[N];inti1,j1;printf\n\n⑦.编译前后结果的比较;iffp1d\\ywq\\ywq1.txt,rtNULL{printf\n打开文件失败\n;exit1;}printf\n\n原文件ywq1.txt中的字符为;fori1;s1[i]fgetcfp1EOF;iprintfc,s1[i];fclosefp1;iffp2d\\ywq\\ywq3.txt,rtNULL{printf\n打开文件失败\n;exit1;}printf\n文件ywq3.txt中的字符为;fori1;s2[i]fgetcfp2EOF;iprintfc,s2[i];fclosefp2;whilejk{ifs1[j]s2[j]j;else{printf\n编码失败\n;break;}}ifjkprintf\n前后数据一致,编码成功。。。O∩_∩O。。。\n;}voidmain{inti,k;intj1;HuffmanTreeht;HuffmanCodehc;strs2[128];systemcolorF5;printf\n-------------------------------哈夫曼编码译码器---------------------------------;kreads2;getch;CrtHuffmanTreeht,s2,k;CrtHuffmanCodeht,hc,k;WriteToFilehc,k;getch;printf\n\n;printf⑤.建立的哈夫曼树为;printf\nnumber\tdata\tweight\tlchild\trchild\tparent;fori1;ik;i{printf\ndcdddd,i,ht[i].data,ht[i].weight,ht[i].lchild,ht[i].rchild,ht[i].parent;}printf\n\n;DecodHuffmanCodeht,k;getch;comparek;printf\n\n按任意键退出...\n;}忽略此处..

注意事项

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

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




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

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

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

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