好文档 - 专业文书写作范文服务资料分享网站

无损压缩编码实验

天下 分享 时间: 加入收藏 我要投稿 点赞

.

无损压缩编码实验

实验报告

一、 实验题目:无损压缩编码实验

二、 实验要求:任选一种无损编码式,通过C++编程实现。 (1) 字符串的输入是手工输入的。

(2) 通过程序实现编码,最终在屏幕上现实编码结果。

Word 资料

.

三,实验分析

采用霍夫曼编码实现无损压缩编码,从键盘输入若干字符及每个字符出现的频率,将字符出现的频率作为结点的权值,建立哈夫曼树,然后对各个字符进行哈夫曼编码,最后打印输出字符及对应的哈夫曼编码,并算出平均码长。 四,主要编码原理

Word 资料

.

开始建立huffman树初始化parent,lchild,rchild为-1从所有树中选择权值最小的两棵对变量small1和small2赋值(森林中得任意两棵树的权值)否i=i+1Huffmantree[i].weightsmall2交换small1和small2将两棵树合并,生成新节点Word 资料

为前n个元素编码是双亲节点是否为空否该节点为左孩子否是否A[i]=0;A[i]=1;i=i+1i=i+1i=n是结束

.

五,源程序代码

#include using namespace std;

class HuffmanTree//霍夫曼树结构 {public:

unsigned int Weight, Parent, lChild, rChild; };

typedef char **HuffmanCode;

void Select(HuffmanTree* HT,int Count,int *s2,int *s1)//从结点集合中选出权值最小的两个结点 {

unsigned int temp1=0; unsigned int temp2=0; unsigned int temp3; for(int i=1;i<=Count;i++)

{

if(HT[i].Parent==0)

{

if(temp1==0) {

temp1=HT[i].Weight;

Word 资料

.

}

(*s1)=i;

else { if(temp2==0) {temp2=HT[i].Weight;

Word 资料

(*s2)=i;

if(temp2

temp3=temp2;

temp2=temp1; temp1=temp3;

temp3=(*s2);

(*s2)=(*s1); (*s1)=temp3;

}

}

else { if(HT[i].Weight

temp1=HT[i].Weight;

5xh6h3h68p6rgfk15sw18xzko02xvg00fve
领取福利

微信扫码领取福利

微信扫码分享