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

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

数据结构课程设计哈夫曼编码译码器_第1页
1/15
数据结构课程设计哈夫曼编码译码器_第2页
2/15
数据结构课程设计哈夫曼编码译码器_第3页
3/15
.;.西安郵電學院数据结构课程设计报告题目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.系统结构图(功能模块图).;.2.功能模块说明1:统计字符频率:定义结构体typedefstructstr{chardata;charnum;}str;其中data域存放字符名称,num域存放字符出现频率,读取文件ywq1.txt,通过循环比较将结果赋入S2[128]中;2:创建Huffman树:定义结构体typedefstruct{chardata;intweight;intparent;intlchild;intrchild;}HTNode,HuffmanTree[M+1];作为Huffman树存储节点类型,调用CrtHuffmanTree()函数,初始化各节点均为0;然后将存储字符频率的数组S2的值赋值给各节点,字符出现频率作为权值,创建Huffman树;开始main()统计字符频率创建Huffman树对文件编码对编码译码出现次数字符名称初始化结点赋值Huffma编码存入文件读取编码存入文件对编码译码对编码译码成功失败.;.3:对文件编码:定义结构体typedefstruct{chardata;charbits[N+1];}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棵二叉树n>1选权值最小2个二叉树权值相加得新二叉树n-1n=1建立Huffman树结束.;.3:Huffman编码,CrtHuffmanCode();运行结果:编码文件ywq2.txt:CrtHuffmanCode()根cd[--start]=‘0’cd[--start]=‘1’否LchildRchildcd[start]赋给hc[i].bits是结束对应字符编码写入文件ywq2.txt.;.3:译码,DecodHuffmanCode():运行结果:DecodHuffmanCode()打开文件ywq2.txt读取字符ch文件结束否否找根节点ch=‘0’,找lchild;ch=‘1’,找rchild;叶子节点是是保存ywq3.txt是结束.;.文件ywq3.txt:4:结果验证:比较源文件ywq1.txt与译码文件ywq3.txt可知,译码结果与源文件一致。运行结果:Compare()读取ywq1.txt中的字符,存入s1,并输出,读取ywq3.txt中的字符,存入s2,并输出,si[i]==s2[i]是i++,i=1i

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

碎片内容

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

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