哈弗曼编码实验报告-无损压缩实验报告(共7页).doc
《哈弗曼编码实验报告-无损压缩实验报告(共7页).doc》由会员分享,可在线阅读,更多相关《哈弗曼编码实验报告-无损压缩实验报告(共7页).doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上哈弗曼编码实现无损压缩实验报告一、 实验内容通过C+编程实现。要求:1) 字符串的输入是手工输入的;2) 通过程序实现编码,最终在屏幕上显示编码结果,例如,如果选用huffman编码,则要显示字符串的编码以及平均码长;二、 源代码#include#include#include#include#if !defined _HUFFMANTREE_H_#define _HUFFMANTREE_H_class HuffmanTreepublic: unsigned int Weight; unsigned int Parent; unsigned int lChild; u
2、nsigned int rChild;typedef char *HuffmanCode;/*从结点集合中选出权值最小的两个结点将值分别赋给s1和s2*/void Select(HuffmanTree* HT,int Count,int *s1,int *s2) unsigned int temp1=0; unsigned int temp2=0; unsigned int temp3; for(int i=1;i=Count;i+) if(HTi.Parent=0) if(temp1=0) temp1=HTi.Weight; (*s1)=i; else if(temp2=0) temp2=H
3、Ti.Weight; (*s2)=i; if(temp2temp1) temp3=temp2; temp2=temp1; temp1=temp3; temp3=(*s2); (*s2)=(*s1); (*s1)=temp3; else if(HTi.Weighttemp1&HTi.Weighttemp2) temp2=HTi.Weight; (*s2)=i; /*霍夫曼编码函数*/void HuffmanCoding(HuffmanTree * HT, HuffmanCode * HC, int *Weight, int Count) int i; int s1,s2; int TotalLe
4、ngth; char* cd; unsigned int c; unsigned int f; int start; if(Count=1) return; TotalLength=Count*2-1;HT = new HuffmanTree(TotalLength+1)*sizeof(HuffmanTree); for(i=1;i=Count;i+) HTi.Parent=0; HTi.rChild=0; HTi.lChild=0; HTi.Weight=(*Weight); Weight+; for(i=Count+1;i=TotalLength;i+) HTi.Weight=0; HTi
5、.Parent=0; HTi.lChild=0; HTi.rChild=0; /建造霍夫曼树 for(i=Count+1;i=TotalLength;+i) Select(HT, i-1, &s1, &s2); HTs1.Parent = i; HTs2.Parent = i; HTi.lChild = s1; HTi.rChild = s2; HTi.Weight = HTs1.Weight + HTs2.Weight; /输出霍夫曼编码 (*HC)=(HuffmanCode)malloc(Count+1)*sizeof(char*); cd = new charCount*sizeof(c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈弗曼 编码 实验 报告 无损 压缩
限制150内