游程编码实验报告.doc

游程编码实验报告.doc

ID:59368917

大小:38.00 KB

页数:2页

时间:2020-09-04

游程编码实验报告.doc_第1页
游程编码实验报告.doc_第2页
资源描述:

《游程编码实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验二游程编码一、实验目的1、掌握游程编码原理;2、理解数据编码压缩和译码输出编码的实现。二、实验要求实现游程编码和译码的生成算法。三、实验内容输入一幅二值图像,先统计要压缩编码的文件中的字符字母出现的次数,按字符字母和空格出现的概率对其进行哈夫曼编码,然后读入要编码的文件,编码后存入另一个文件;接着再调出编码后的文件,并对其进行译码输出,最后存入另一个文件中。四、实验原理1、哈夫曼树的定义:假设有n个权值,试构造一颗有n个叶子节点的二叉树,每个叶子带权值为wi,其中树带权路径最小的二叉树成为哈夫曼树或者最优二叉树;2、哈夫曼树的构造

2、:weight为输入的频率数组,把其中的值赋给依次建立的HTNode对象中的data属性,即每一个HTNode对应一个输入的频率。然后根据data属性按从小到大顺序排序,每次从data取出两个最小和此次小的HTNode,将他们的data相加,构造出新的HTNode作为他们的父节点,指针parent,leftchild,rightchild赋相应值。在把这个新的节点插入最小堆。按此步骤可以构造构造出一棵哈夫曼树。  通过已经构造出的哈夫曼树,自底向上,由频率节点开始向上寻找parent,直到parent为树的顶点为止。这样,根据每次向上

3、搜索后,原节点为父节点的左孩子还是右孩子,来记录1或0,这样,每个频率都会有一个01编码与之唯一对应,并且任何编码没有前部分是同其他完整编码一样的。五、实验程序#include#include#defineNUM1000main(){inti,j,x,z,cnt=1,k=0,h=0,a[NUM];chardat,flag,str[NUM],b[NUM];printf("(请输入待编码的字符串)");printf("原字符串为:");gets(str);//输入待编码的字符串flag=str

4、[0];//记下第一个字符值作为flag游程编码的起始值/************************编码部分**********************************************/printf("游程编码为:");for(i=0;i

5、数数组cnt=1;//使计数cnt归1}}/************************译码部分**********************************************/printf("译码结果为:");for(j=0;j

6、从0和1切换赋值}for(x=0;x

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

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

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