- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
hufuman 编码
/***************************************************/???
/*????项目名称:霍夫曼编码算法?????*/???
?????????????????????????????????????
/***************************************************/???
#include?iostream.h? ??
#include?vector? ??
#include?string? ??
#include?stdlib.h? ??
???
using?namespace?std;???
???
???
//存储霍夫曼树节点的数据结构? ??
typedef?struct?treenode???
{???
????char?data;????????????????????//存储要编码的字符? ??
????int?weight;???????????????????//存储要编码的字符的权重? ??
????struct?treenode*?parent;????//父节点? ??
????struct?treenode*?lchild;????//左子树? ??
????struct?treenode*?rchild;????//右子树? ??
}TreeNode;???
???
//存储霍夫曼码表单元的数据结构? ??
typedef?struct?nodecode???
{???
????char?node;?????//存储要编码的字符? ??
????string?huffmancode;//存储相应字符的霍夫曼码? ??
}Nodecode;???
???
//定义全局变量? ??
?static?int?N;??//记录文件中出现的字符总数? ??
?static?nodecode?s[30];//计算出的霍夫曼码表? ??
?static?int?index=0;????
/*******************************************************************/???
/*函数功能:获得字符cc在文件中出现的次重,以此作为权重??
/******************************************************************/???
int?GetCount(FILE*?fp,char?cc)???
{???
????int?i=1;???
????while(!feof(fp))???
????{???
????????if(cc==fgetc(fp))???
????????????i++;???
????}???
????rewind(fp);???
????return?i;???
}???
/******************************************************************************/???
//函数功能:判断vector中是否已存在指定字符为cc的treenode? ??
/******************************************************************************/???
int?IsExit(vectorTreeNode*?vec,char?cc)???
{???
????for(int?i=0;ivec.size();i++)???
????{???
????????if(cc==vec[i]-data)???
????????????return?1;???
????}???
????return?0;???
}???
/******************************************************************************/???
//函数功能:从vector中选择权重最小的两个节点lnode,? ??
//?????????rnode,并将其从vector中移除? ??
/******************************************************************************/???
vectorTreeNode*?Select(vectorTreeNode*?vec,TreeNode**?lnode,TreeNode**?rnode)???
{???
????int?temp=vec[0]-weight;???
????vectorTreeNode*::iterator?i
您可能关注的文档
最近下载
- 基于LabVIEW的远程心电信号采集系统.doc
- T_SCS 000015-2023 氧化锆固体电解质 相含量的测定 全谱拟合法.docx VIP
- SN∕T 3131-2012 自行车车闸闸皮中石棉含量的测定 偏光显微镜-X射线衍射光谱法.docx VIP
- 大迈X7 DCT360C众泰培训.pdf
- SN_T 5499-2023 矿产品中滑石含量的测定 X射线衍射全谱拟合法.docx
- SN_T 3514-2013电工钢晶粒取向与无取向鉴定方法X射线衍射测定织构法.docx VIP
- (三模)新疆维吾尔自治区2025年高考第三次适应性检测 理科综合试卷(含答案).pdf
- 大学生志愿服务西部计划服务鉴定表.doc
- 体育馆落地式钢管脚手架施工方案.pdf VIP
- 中国职业教育发展白皮书.pdf VIP
文档评论(0)