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

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

ID:56779766

大小:121.50 KB

页数:19页

时间:2020-07-09

数据结构课程设计哈夫曼编码译码器.doc_第1页
数据结构课程设计哈夫曼编码译码器.doc_第2页
数据结构课程设计哈夫曼编码译码器.doc_第3页
数据结构课程设计哈夫曼编码译码器.doc_第4页
数据结构课程设计哈夫曼编码译码器.doc_第5页
资源描述:

《数据结构课程设计哈夫曼编码译码器.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、.西安郵電學院数据结构课程设计报告题目1:哈夫曼编码/译码器题目2:学生信息管理系统系部名称:通信工程系专业名称:通信工程班级:****学号:*****Word资料.学生姓名:****指导教师:*****时间:2009年12月16日至2009年12月25日题目1.哈夫曼编码/译码器一、课程设计目的通过对哈夫曼编码/译码器的实现,熟悉了解Huffman树的创建过程以及存储结构,对Huffman编码/译码过程及原则有了更深层次的认识,锻炼了动手能力,使知识更好的学以致用,为解决数据压缩问题提供方法。二、课程设计内容通过统计文件中各

2、字符的出现频率,建立Huffman树,再通过建立的已经Huffman的树,对文件中各字符进行编码,将结果存入新的文件中,然后从文件中读取Huffman编码,进行解码,结果存入新的文件中,并与源文件进行比较。三、需求分析1.统计字符频率:存文件中读入字符,并对各字符出现频率进行统计;2.建立Huffman树:将各字符出现的频率作为权值,建立Huffman树;3.Huffman编码:通过已经建立的Huffman树,对个各字符进行编码,并存入新的文件中;4.译码:读取存放Huffman编码的文件,对文件中编码进行译码,把译码结果存入

3、新的文件中;5.结果验证:将译码结果与原文件内容进行比较;四、概要设计1.系统结构图(功能模块图)Word资料.开始main()统计字符频率创建Huffman树对文件编码对编码译码出现次数字符名称初始化结点赋值Huffma编码存入文件读取编码存入文件对编码译码对编码译码成功失败2.功能模块说明1:统计字符频率:定义结构体typedefstructstr{chardata;charnum;}str;其中data域存放字符名称,num域存放字符出现频率,读取文件ywq1.txt,通过循环比较将结果赋入S2[128]中;2:创建Hu

4、ffman树:定义结构体typedefstruct{chardata;intweight;intparent;intlchild;Word资料.intrchild;}HTNode,HuffmanTree[M+1];作为Huffman树存储节点类型,调用CrtHuffmanTree()函数,初始化各节点均为0;然后将存储字符频率的数组S2的值赋值给各节点,字符出现频率作为权值,创建Huffman树;3:对文件编码:定义结构体typedefstruct{chardata;charbits[N+1];}CodeNode,Huffma

5、nCode[N];作为HuffmanCode的存储类型,调用CrtHuffmanCode()函数,从叶子节点向上回溯,是lchild则赋值‘0’,是rchild则赋值为‘1’,对各字符编码,再调用WriteToFile()函数,将结果写入文件ywq2.txt中;4:对文件译码:读取编码文件ywq2.txt中数据,调用DecodHuffmanCode()函数,从根节点开始,读取‘1’,走向rchild,读取‘0’,走向lchild,直到叶子节点,将叶子节点data域的值写入文件ywq3.txt中;五、详细设计及运行结果1.读文件

6、统计字符频率(read()函数中实现):Word资料.打开源文件ywq1.txt读文件内的字符,初始化数组s1文件是否结束将字符存入数组S1[ch].num++读下一个字符给数组末尾加上结束标志“”关闭文件是否开始结束源文件ywq1.txt:Word资料.运行结果:2:创建Huffman树,CrtHuffmanTree():初始化结构体数组htCrtHuffmanTree()有n棵二叉树n>1选权值最小2个二叉树权值相加得新二叉树n-1n=1建立Huffman树结束运行结果:Word资料.3:Huffman编码,CrtHu

7、ffmanCode();CrtHuffmanCode()根cd[--start]=‘0’cd[--start]=‘1’否LchildRchildcd[start]赋给hc[i].bits是结束对应字符编码写入文件ywq2.txt运行结果:Word资料.编码文件ywq2.txt:3:译码,DecodHuffmanCode():Word资料.DecodHuffmanCode()打开文件ywq2.txt读取字符ch文件结束否否找根节点ch=‘0’,找lchild;ch=‘1’,找rchild;叶子节点是是保存ywq3.txt是结束运

8、行结果:文件ywq3.txt:Word资料.4:结果验证:比较源文件ywq1.txt与译码文件ywq3.txt可知,译码结果与源文件一致。Compare()读取ywq1.txt中的字符,存入s1,并输出,读取ywq3.txt中的字符,存入s2,并输出,si[i]==s2[i]

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。