-树-哈夫曼编解码的实现-实验内容与要求.docxVIP

-树-哈夫曼编解码的实现-实验内容与要求.docx

  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文档。上传文档
查看更多
-树-哈夫曼编解码的实现-实验内容与要求

数据结构实验报告评分满分——10分学号:2015111840 姓名:陈周擎 专业:计算机科学与技术知识范畴:树 完成日期:2017年05月12日实验题目:Huffman编解码的实现实验内容及要求:从字符文件读取若干个大写英文字符(英文字符种类数m建议为6至8种,如:m=6,则英文字符可取A-F),统计m种英文字符的出现频度,构造Huffman二叉树,对所有英文字符进行Huffman编码,将编码后的比特流用byte型(或char型)数组实现存储。在屏幕上输出该比特流的压缩率,然后利用该数组和Huffman二叉树进行译码,将译码后的字符序列输出到另一个字符文件。提示:(1) 输入与输出字符文件每10个字符一行; (2) 输入文件中的不可显示字符(如:回车、换行符)不进行统计和编码; (3) 压缩率=平均编码长度/log2m。实验目的:掌握Huffman二叉树及Huffman编、译码。数据结构设计简要描述:本实验采用数组以及静态链表方式存储。码树结点的结构体:typedef struct{ int parent,; //双亲下标int lchild; //左儿子下标int rchild; //右儿子下标 double w; //结点权值} HF_BTNode;Huffman码树及码表:typedef struct{ int n; //实际符号数 char s[N]; //符号表 double weight[N]; //符号权重表 char code[N][N+1]; //编码表 HF_BTNode hf[2 * N - 1]; //码树 double rate; //压缩率}HFT;算法设计简要描述:本实验中核心算法包括构造Huffman二叉树并编码算法、解码算法。构造Huffman二叉树并编码:hf[0..n-1]为码树的叶子结点。构造Huffman树的过程共需要进行n-1趟两个子树的合并,每趟合并后,生成的新的子树的根结点按照下标增量次序加入。解码算法:设接收二进制序列用字符串表示,从根结点出发,‘1’表示向左,‘0’表示向右深入,直到到达某个叶子结点时,输出叶子结点对应的符号;重复此过程,直到接收序列全部译出。输入/输出设计简要描述:本实验中分别有一次输入和两次输出。输入:英文字符种类数m。输出:译码的字符序列输出到另一个文件中;在屏幕上输出Huffman编码的压缩率。编程语言说明:1.编程软件,Code Blocks 16.0;2.代码均用C++语言实现;3.输入输出采用C++语言的cout和cin函数;4.程序注释采用C/C++规范;5.动态存储分配采用C++的new和delete操作符实现主要函数说明:void insert(char ch) //插入字符int found(char ch) //查找字符void creat() //构造霍夫曼二叉树void coding() //生成各种字符编码void cal() //计算压缩率void coding(char *sour, HFT hft) //字符串进行霍夫曼编码void decoding(char *dsou, HFT hft) //字符串解码程序测试简要报告:测试实例1输入:请输入m:4输出:压缩率为 0.875运行界面:结论:程序输出结果与期望输出结果相符。测试实例2输入:请输入m:10输出:压缩率为 0.872987运行界面:结论:程序输出结果与期望输出结果相符。测试实例3输入:请输入m:6输出:压缩率为 0.976803运行界面:结论:程序输出结果与期望输出结果相符。源程序代码:#include iostream#include cstdio#include cstring#includestdio.h#include cmath#define N 256 //最多字符种类#define MAXL 10000 //最长文件长度using namespace std;typedef struct{ int parent, lchild, rchild; double w;} HF_BTNode;char rece[MAXL]; //编码结果char s[MAXL]; //源字符串(编码源)int byte_num; //编码总位数typedef struct{ int n; //实际符号数 char s[N]; //符号表 double weight[N]; //符号权重表 char code[N][N+1]; //编码表 HF_BTNode hf[2 * N - 1]; //码树 double rate; //压缩率void insert(cha

文档评论(0)

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

教师资格证持证人

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

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档