- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
#includeiostream
#includefstream
#includequeue//队列容器usingnamespacestd;
constintleaf=256;//最多可能出现的不同字符数
constlongMAX//表示无穷大typedefstructHTnode
{
longweight;
intparent;
intIchild;
intrchild;
int*code;
intcodelen;
HTnode()
{
weight=MAX;parent=-1;
Ichild=-1;
rchild=-1;
codelen=0;
}HTnode;
//记录结点的权值
//记录结点的双亲结点位置//结点的左孩子
//结点的右孩子
//记录该结点的huffman编码
//记录该结点huffman编码的长度
classhuffmanTree{
public:
huffmanTree();
virtual~huffmanTree();
boolcount(char*input);//统计各字符出现的次数,将其写入对应结点的权值voidcreate();//构造huffman树
voidcode();//计算每个字符的huffman编码
voidaddbit(intbit);//压缩时对一个未满8个bit的byte中加入一个bit
voidresetbyte();//将byte清空
boolcompress(char*input,char*output);败false
booldecompress(char*input,char*output);失败false
voidcompare(char*input,char*output);
//压缩函数成功执行返回true失
//解压函数成功执行返回true
//将原文件与压缩后的文件比较
private:
introot;
intleafnum;
//记录根结点的位置
//记录不同字符的个数
HTnodeHT[leaf*2-1];
点个数不会超过leaf*2-1
charbyte;
intbitsnum;
intlacknum;;
huffmanTree::huffmanTree()
{
//初始化成员变量root=0;
leafnum=0;
byte=0;
bitsnum=0;
lacknum=0;{
//HTnode结构的数组,用来表示huffman树,树的最大结
//压缩文件时用来缓冲bit的变量//byte中bit的个数
//压缩到最后byte中的bit不满8个时填充的0的个数
ma
预览与源文档一致下载高清无水印
huffmanTree::~huffmanTree()
{
for(inti=0;ikleaf;i++)
{
if(HT[i].codelen1=0)
delete[]HT[i].code;
//统计各字符出现的次数
boolhuffmanTree::count(char*input)
{
ifstreamifs;
charc;
ifs.open(input,ios::binary);
if(lifs){
cout无法打开文件“inputTendl;
returnfalse;
}
while(ifs.get(c)){
if(HT[c+128].weight==MAX){//若该字符是第一次出现,先初始化权值HT[c+128].weight=0;
leafnum++;
HT[c+128].weight++;//权值+1
ifs.close();
returntrue;
}
//选权值最小的两棵树组成新的数voidhuffmanTree::create()
{
for(inti=leaf;i2*leaf-1;i++)
{
intloc1=-1,loc2=-1;
for(intj=0;jsi;j++){
if(HT[j].parent1=-1)
continue;
if(loc1==-1||HT[j].weightHT[loc1].weight)
{
loc2=loc1;
loc1=j;
}
elseif(loc2==-1||HT[j
您可能关注的文档
最近下载
- 教学能力大赛常见答辩问题汇总2.docx VIP
- 2025年河南省焦作市解放区小升初必考题数学检测卷含解析.doc VIP
- 小学人工智能校本课程《会听的人工智能——语音识别》教学设计.pdf VIP
- EVE各族战舰介绍及装配.doc VIP
- 2024-2025学年河南省焦作市解放区小升初总复习数学精选精练含解析.doc VIP
- 报刊客户的营销方案(3篇).docx VIP
- 2025广西公需科目培训考试答案(90分)——“一区两地一园一通道”建设;人工智能时代的机遇与挑战(1).pdf VIP
- 纺织企业(印染厂)全套组织架构、部门岗位职能设计及全套企业管理制度汇编(拿来即用).docx
- 电网物资质量检测能力评价导则(试行).docx
- 贵州省教科院贵州省教育学会教学设计论文评选结果.docx VIP
文档评论(0)