- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
河南工程学院《数据结构与算法》课程设计成果报告
赫夫曼编码的相关实现2014年12月29日
2.4程序图
进行主函数时,输入100个字母,并输入其权值,将其进行编码;将str 的权值赋给ht,判断结点是否大于1,输出根结点及权值。比拟i〈2*N-1;假设是 调用SELECT函数算出父亲结点然后输出字符编码和译码。流程图如图2-4所示:
i++
i++
i++计算根结点函3程序清单
i++
计算根结点函
#includeiostream. h#includestdio.h
#includestdlib. h#includestring. h
#includefstream. htypedef struct { 〃赫夫曼树的结构体
char ch;int weight; 〃权值
int parent, Ichild, rchild;}htnode, *hfmtree;
typedef char **hfmcodc;void Select (hfmtree HT, int a, int *pl, int *p2) //Select 函数,选出 HT 树到 a 为止,权值最小且 parent
为的2个节点
{int i, j, x, y;for(j=l;j=a;++j) {
ifparent==0) { x=j;break; } }
for (i=j+l;i=a;++i){if (HT[i]. weightHT[x]. weightHT[i]. parent==0) {
x二i;} } 〃选出最小的节点for(j=l;j=a;++j) {
if (HT[j]. parent==Ox!=j) {y二 j;
break;} }for (i=j+l;i=a;++i) {
if (HT[i]. weightHT[y]. weightHT[i]. parent==0x!=i) {y=i; }} 〃选出次小的节点
if(xy){pl=y;
p2=x; }else {
*pl=x;p2=y;} )
void hfmcoding(hfmtree HT, hfmcode HC, int n) 〃构建赫夫曼树HT,并求出n个字符的赫夫曼编码HC { int i, start, c, f, m, w;int pl,p2;
char *cd, z;if(n=l){
return; }m=2*nT;
HT=(hfmtree)malloc((m+1) *sizeof(htnode));for(i=l; i=n; ++i) 〃初始化n个叶子结点
{ printf (〃请输入第%d字符信息和权值:〃,i);scanf(〃%c%d〃,z, w);
while(getcharO !=,\n,){ continue; }
IIT[i].ch=z;HT[i]. weight=w;
HT[i]. parent=0;HT[i]. Ichild=O;
HT[i]. rchild=0; }for(; i=m;++i) { 〃初始化其余的结点
HT[i].ch= 0,;HT[i].weight=0;
HT[i]. parent=0;HT[i].lchild=0;
HT[i].rchild=O; } for (i=n+l; i=m;++i) //建立赫夫曼树{ Select (HT,i-1,pl, p2);
HT[pl].parent=i;HT[p21? parent=i;HT[i]. lchild=plrchild=p2;
HT[i]. weight=HT[pl]. weight+HT[p2]. weight; }HC=(hfmcode)mal1oc((n+1) *s i zeof(char *));
cd二(char *)malloc(n*sizeof(char));cd[n-l]= \0J ;
for(i=l;i=n;++i) 〃给 n 个字符编码{ start=n-l;
for(c=i, f=HT[i]. parent;f!=0;c=f, f=HT[f]. parent){ if(HT[f]. lchild==c)
{ cd[--start]=O ; }else
{ cd[一start]=1 ; } }HC[i] = (char*)malloc((n-start)*sizeof(char));
strcpy (HC[i],cd[start]); }free (cd); )
int mainO {char code[100],h[100], hl[100];
int n, i, j, k, 1;if stream input_file; 〃文件输入输出流
ofstream output_file;char choice,str[100];
hfmtree IIT;hfmcode
您可能关注的文档
- 高速公路公司管理处路安科内业考评办法.docx
- 高血压饮食护理ppt课件 (2).docx
- 高考文言文复习备考:古代文化常识之称谓 导学案.docx
- 项目经理安全防火责任制.docx
- 适合适障者的温和针灸教学反思.docx
- 课程设计报告-程序分析3.docx
- 蔬菜生产技术:常见蔬菜的分类.docx
- 美好生活从安全开始作文800字5篇.docx
- 管道滑脱风险评估表.docx
- 第7节《水资源的利用、开发和保护》B.docx
- 幼儿园全民国家安全教育日PPT.ppt
- 文明礼仪伴我行主题班会课.ppt
- 4.2 《心有一团火,温暖众人心》课件(共26张PPT) 2024-2025学年统编版高中语文必修上册.pptx
- 大模型平民化开启“AI+医疗”新纪元.pptx
- 2《以工匠精神雕琢时代品质》 课件(共28张PPT)2024-2025学年统编版高中语文必修上册.pptx
- 3《鸿门宴》 课件 (共52张PPT)2024-2025学年统编版高中语文必修下册.pptx
- unit 2能力阅读写作拔高练-学九级英语全一册单元模块满分必刷题人教版.pdf
- 9.3 《声声慢(寻寻觅觅)》课件 (共25张PPT)2024-2025学年统编版高中语文必修上册.ppt
- “4·23世界读书日”主题教育班会-阅读启心智,知识筑梦想 课件(共27张PPT).pptx
- 4EAT 变速箱维修手册.pdf
最近下载
- DG_TJ08-40-2010:地基处理技术规范.pdf VIP
- 2024年四川省宜宾市江安区化学中考一诊试卷.doc VIP
- 2024年中考语文总复习专题06:修辞手法(附答案解析).docx
- QCT 468_汽车散热器最新标准规范.pdf
- 《基本分析与技术分析相结合的A股投资策略案例报告》6200字.doc
- 2 TNC 640 HSCI加工中心和铣车复合加工机床数控系统.pdf VIP
- 2024年四川省宜宾市江安中学中考物理一诊试卷 .docx VIP
- 节能与新能源汽车技术路线图2.0_完整下载版.pdf
- 一般现在时(第三人称单数形式_)及练习.doc VIP
- 医院医保办个人年度述职报告与医院医保办个人总结汇编.doc VIP
文档评论(0)