数据结构实验报告-文件压缩.pdfVIP

  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文档。上传文档
查看更多
. 数据结构与程序设计实验 实 验 报 告 课程名称 数据结构与程序设计实验 课程编号 0906550 实验项目名称 文件压缩 学号 年级 姓名 专业 计算机科学与技术 学生所在学院 计算机学院 指导教师 杨静 实验室名称地点 21B276 哈尔滨工程大学 范文 . . 实验报告四 实验课名称:数据结构与程序设计实验 实验名称:文件压缩 班级: 学号: 姓名: 时间: 2016.04.21 一、问题描述 哈夫曼编码是一种常用的数据压缩技术,对数据文件进行哈夫曼编码可大大缩短文件的 传输长度, 提高信道利用率及传输效率。 要求采用哈夫曼编码原理, 统计文本文件中字符出 现的词频, 以词频作为权值, 对文件进行哈夫曼编码以达到压缩文件的目的, 再用哈夫曼编 码进行译码解压缩。 统计待压缩的文本文件中各字符的词频,以词频为权值建立哈夫曼树, 并将该哈夫曼树保存到文件 HufTree.dat 中。 根据哈夫曼树(保存在 HufTree.dat 中)对每个字符进行哈夫曼编码,并 将字符编码保存到 HufCode.txt 文件中。 压缩:根据哈夫曼编码,将源文件进行编码得到压缩文件 CodeFile.dat 。 解压:将 CodeFile.dat 文件利用哈夫曼树译码解压,恢复为源文件。 二、数据结构设计 由于哈夫曼树中没有度为 1 的结点,则一棵树有 n 个叶子结点的哈夫曼树共有 2n-1 个 结点,可以存储在一个大小为 2n-1 的一维数组中,而且对每个结点而言,即需知双亲结点 的信息,又需知孩子结点的信息,由此可采用如下数据结构。 1.使用结构体数组统计词频,并存储 : typedef struct Node{ int weight; // 叶子结点的权值 char c; // 叶子结点 int num; // 叶子结点的二进制码的长度 }LeafNode[N]; 2.使用结构体数组存储哈夫曼树 : typedef struct{ unsigned int weight;// 权值 unsigned int parent, LChild, RChild; }HTNode,Huffman[M+1]; //huffman 树 3.使用字符指针数组存储哈夫曼编码表: typedef char *HuffmanCode[2*M]; //haffman 编码表 三、算法设计 1.读取文件,获得字符串 void read_file(char const *file_name, char *ch){ FILE *in_file = Fopen(file_name, r); unsigned int flag = fread(ch, sizeof(char), N, in_file); if(flag =

文档评论(0)

tianya189 + 关注
官方认证
文档贡献者

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

认证主体阳新县融易互联网技术工作室
IP属地湖北
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档