哈夫曼编码译码器 doc.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
哈夫曼编码译码器 doc

西安郵電學院 目1: 哈夫曼编码/译码器 题 目2: 学生信息管理系统 系部名称 : 通信工程系 专业名称 : 通信工程 班 级 : **** 学号 : ***** 学生姓名 : **** 指导教师 : ***** 时间 : 2009年月日 至2009年月日 课程设计内容 通过统计文件中各字符的出现频率,建立Huffman树,再通过建立的已经Huffman的树,对文件中各字符进行编码,将结果存入新的文件中,然后从文件中读取Huffman编码,进行解码,结果存入新的文件中,并与源文件进行比较。 三、需求分析 1.统计字符频率:存文件中读入字符,并对各字符出现频率进行统计; 2.建立Huffman树:将各字符出现的频率作为权值,建立Huffman树; 3.Huffman编码:通过已经建立的Huffman树,对个各字符进行编码,并存入新的文件中; 4.译码:读取存放Huffman编码的文件,对文件中编码进行译码,把译码结果存入新的文件中; 5.结果验证:将译码结果与原文件内容进行比较; 四、概要设计 1. 系统结构图(功能模块图) 2.功能模块说明 1:统计字符频率: 定义结构体 typedef struct str { char data; char num; }str; 其中data域存放字符名称,num域存放字符出现频率,读取文件ywq1.txt,通过循环比较将结果赋入S2[128]中; 2:创建Huffman树: 定义结构体 typedef struct { char data; int weight; int parent; int lchild; int rchild; }HTNode,HuffmanTree[M+1]; 作为Huffman树存储节点类型,调用CrtHuffmanTree()函数,初始化各节点均为 0;然后将存储字符频率的数组S2的值赋值给各节点,字符出现频率作为权值,创建Huffman树; 3:对文件编码: 定义结构体 typedef struct { char data; char bits[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: 运行结果: 2:创建Huffman树,CrtHuffmanTree(): 运行结果: 3:Huffman编码,CrtHuffmanCode(); 运行结果: 编码文件ywq2.txt: 3:译码,DecodHuffmanCode(): 运行结果: 文件ywq3.txt: 4:结果验证: 比较源文件ywq1.txt与译码文件ywq3.txt可知,译码结果与源文件一致。 运行结果: 六、调试情况,设计技巧及体会 通过本次数据结构---哈夫曼编码的应用------课程设计为期两周的实习,让我对数据结构这门课有了深刻的体会,数据结构是在C语言的基础上建立起来的,它是一个程序的必要条件之一,通过本次实习,也让我真正领略到数据结构在一个程序中占有多么重要的地位,程序=算法+数据结构。不同的程序运用不同的数据结构可以起到事半功倍的作用。在这次实习,我就已经深深体会到数据结构的精彩运用。 这次实习的题目是哈夫曼编码的应用,在给定的源文件情况下,要根椐所学的哈夫曼树来建立各字符对应的编码从而达到使字符编码化的目的,又要通过解码使所生成的编码能原封不动地解成原来的文件。 在编写程序的过程中,也遇到了许多问题,也更让我体会到了编写程序应该是一步一个脚印得来的,编写一个模块,调试一个,不能全部编写的差不多了,在进行调试,这样反而是得不偿失,遇到一大堆的错误让人无从找起。从最开始的统计,建树,选择最小次小值,到后来的编码、译码,自己写了一些,也参考了一下别人好的程序,例如在选择最小值和次小值时,按照书上是给min1和min2初始赋值为32767,但参照了一些好的程序之后,我选择将

文档评论(0)

almm118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档