合肥工业大学信息论与编码实验完整代码版要点讲解.docVIP

合肥工业大学信息论与编码实验完整代码版要点讲解.doc

  1. 1、本文档共65页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机与信息学院 信息论与编码 实验报告 专 业 班 级 信息安全13-1班 学生姓名及学号 马骏 2013211869 课程教学班号 任 课 教 师 苏兆品 实验指导教师 苏兆品 实验地点 逸夫楼 2014 ~2015 学年第 一 学期 实验1 霍夫曼编码 基本要求 通对任意输入的字符串序列进行3元霍夫曼编码,给出编码结果、编码效率;并实现相应的译码操作。 提升要求 对一幅BMP格式的灰度图像进行二元霍夫曼编码。 问题描述 三元霍夫曼编码首先需要考虑的是如何表示三元 三元霍夫曼编码需要对不满足2n+3的情况做处理 使用什么数据结构建立霍夫曼树 四、算法思想 1、使用两个二进制位表示一个三元变量,即00表示a、01表示b、11表示c。 2、出现不满足2n+3情况即需要加入一个出现次数为0次的字符,遍历已经出现的字符,找到一种八位二进制组合作为新字符。 3、建立霍夫曼树的算法,使用数组的结构作为整棵树的空间,其中每个数组元素是一个类的实例。 在这各类里封装了他所代表的字符(如果不是叶子节点则为null)、出现的次数(非叶子结点则为子节点的此项加和)。 承载整棵树的数组也是封装在一个类里的,这个类同时封装了对这棵树的操作,如添加节点、树节点排序等,这样就可以使从添加叶子节点后建立整棵霍夫曼树。 模块划分 char huancun[max];//从文件中读入的字符 char yasuohuancun[max];//压缩后可以写进文件中的字符串 long int yasuohuancunnumber=0;//准备写入文件中的个数 long int huancunnumber=0;//从文件中读出字符个数 class tree {void set(int a,int b,int c,int d,int e)//次数为a,左孩子为b,中孩子为c,右孩子为d,自己的编号e int mynumber;//次数 int leftsonnumber;//数组编号 int middlesonnumber; int rightsonnumber;//数组编号 控制时没有儿子节点则儿子都是负数 int myzifunumber;//作为叶子节点在数组中的编号 }; class table//压缩对照表 { public:table() void cutrealfile()//将缓存中一样的字符区别开 void uncheck(char huancun)//检查是否出现过字符 bool check(char huancun)//检查源文件字符是否出现过 int checkhuancun(int i)//读缓存数组的字符,返回yasuozifu数组中的地址 void count(tree fun[],int begin,int end)//begin~end区间内排序 char h3setonechar(char n1,char n2,char n3,char n4)//三元霍夫曼给进一个char 位操作使用内联汇编语言 d 是不会被译码的 为了补齐余码 void linshih3manage(char ptr)//进来字符存起来 每四个存一个 void writesign(tree fun[],int permitnumber,char k,int futhernumber)//先给sign的值 递归构建霍夫曼树 void hafuman3()//三元霍夫曼编码函数 void codemanage()//对整个缓存进行编码 bool checkh3code(string ptr)//对解压缩后的码串译码 void jiemah3code(char ptr)//对一个char型8位进行解码为4个char型 void discodemanage()//解压缩程序 使用huancun[]放密文,解压后原文放在yasuohuancun[]中 char linshih3[4];//临时三元霍夫曼 int linshih3number;//记录临时三元霍夫曼个数 int numbe

文档评论(0)

我是兰花草 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档