.
无损压缩编码实验
实验报告
一、 实验题目:无损压缩编码实验
二、 实验要求:任选一种无损编码式,通过C++编程实现。 (1) 字符串的输入是手工输入的。
(2) 通过程序实现编码,最终在屏幕上现实编码结果。
Word 资料
.
三,实验分析
采用霍夫曼编码实现无损压缩编码,从键盘输入若干字符及每个字符出现的频率,将字符出现的频率作为结点的权值,建立哈夫曼树,然后对各个字符进行哈夫曼编码,最后打印输出字符及对应的哈夫曼编码,并算出平均码长。 四,主要编码原理
Word 资料
.
开始建立huffman树初始化parent,lchild,rchild为-1从所有树中选择权值最小的两棵对变量small1和small2赋值(森林中得任意两棵树的权值)否i=i+1Huffmantree[i].weight
为前n个元素编码是双亲节点是否为空否该节点为左孩子否是否A[i]=0;A[i]=1;i=i+1i=i+1i=n是结束
.
五,源程序代码
#include
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;
无损压缩编码实验
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)