- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
#includeiostream
#includestring
#includefstream
usingnamespacestd;
#defineMax200eight=w[i];HT[i].parent=0;
HT[i].lchild=0;HT[i].rchild=0;
}
for(i=n+1;i=m;++i)eight=0;HT[i].parent=0;
HT[i].lchild=0;HT[i].rchild=0;
}
for(i=n+1;i=m;++i)i-1]选择parent为0且weight最小的两个结点,其序号分别为S1和S2
min1=min2=INT;
for(j=1;ji;j++)
if(HT[j].parent==0(HT[j].weightmin1))
{min1=HT[j].weight;s1=j;}for(j=1;ji;j++)if(HT[j].parent==0(HT[j].weightmin2)j!=s1)
{min2=HT[j].weight;s2=j;}
HT[s1].parent=i;HT[s2].parent=i;
HT[i].lchild=s1;HT[i].rchild=s2;
HT[i].weight=HT[s1].weight+HT[s2].weight;
ch[i]=;child=s1;HT[i].rchild=s2;
cd[n-1]=\0;arent;f!=0;c=f,f=HT[f].parent)child==c)
cd[--start]=0;
else
cd[--start]=1;
HC[i]=newchar[n-start];果需要取消\n的影响,能够用getchar( );来消除,
ch[i]=getchar( );eightHT[i].parent
HT[i].lchildHT[i].rchildendl;for(i=1;i=n;i++)eightHT[i].parentHT[i].lchildHT[i].rchild;
(c);
}
for(i=1;i=n;i++)
{
(ch[i]);
finHC[i];
(c);
}
}
( );
}
voidEncoding(HuffmanCodeHC,intn)child;
elsej=HT[j].rchild;
if(HT[j].lchild==0)
{foutch[j];j=m;}
i++;
}
foutendl;
}
voidPrint(HuffmanTreeHT,intn)arent==0)eight;
for(l=m;l0;l--)
for(i=1;i=2*n-1;i++)
if(HT[i].weight==l)
{
for(j=0;jk;j++)
{cout
;fout
;}eightendl;foutHT[i].weightendl;
p++;}//p
表示每层的非叶子结点数
q++;//q
记录每层的结点数目
if(q==r){k++;r=2*p;p=0;q=0;}//
如果该层的结点满了,就到下一层,即
k+1
}
}
intmain( )
{
HuffmanTreeHT;
HuffmanCodeHC;
charc;
intn;
HT=newHTNode[Max];
HC=newchar*[Max];
for(inti=1;i=Max;i++)//初始化
HC[i]=newchar[20];
cout-----------------------欢迎进入哈夫曼的编/译码系统----------------------endl;
cout菜单如下:endl;
coutI、初始化endl;
coutE、编码endl;
coutD、译码endl;
coutP、打印代码文件endl;
coutT、打印哈夫曼树endl;
coutQ、退出endl;
while(c!=Q)
{
cout请选择操作:;
cinc;
switch(c)
{
caseI:Initialization(HT,HC,n);
cout哈夫曼树成功存入文件hfmTree中!endl;
break;
caseE:Encoding(HC,n);
cout对文件ToBeTran的编码结果成功存入文件CodeFile中!endl;
break;
caseD:Decoding(HT,n);
cout对文件CodeFile的译码结果成功存入文件TextFile中!endl;
break;
caseP:Print(HT,n);
cout毎行50个代码形式的编码结果成功写入文件CodePrin中!endl;
break;
caseT:cout哈夫曼树的凹入表示法如下:endl;
PrintTree(HT,n);
cout哈夫曼树以凹入
您可能关注的文档
- 哈哈爱你胜过一切.docx
- 哈姓男孩名字大全哈姓好名字.docx
- 哈尔滨地区鸡球虫种类调查及柔嫩艾美耳球虫3-1E基因的原核表达.docx
- 哈尔滨市道里区2013-2014年度毕业班数学模拟测试题(一).docx
- 哈尔滨污水深度处理工艺优化及生产性试验研究.docx
- 哈山地区二叠系风城组云质岩储层发育特征研究.docx
- 哈斯维护保养表.docx
- 哥们结婚祝福语.docx
- 喝酒伤心的伤感说说语录.docx
- 喝酒头疼怎么快速解决.docx
- 英语人教PEP版八年级(上册)Unit4+writing+写作.pptx
- 人美版美术四年级(上册)8 笔的世界 课件 (1).pptx
- 人美版美术七年级(上册)龙的制作.pptx
- 英语人教PEP版六年级(上册)Unit 2 第一课时.pptx
- 数学苏教版三年级(上册)3.3 长方形和正方形周长的计算 苏教版(共12张PPT).pptx
- 音乐人教版八年级(上册)青春舞曲 课件2.pptx
- 音乐人教版四年级(上册) 第一单元 音乐知识 附点四分音符|人教版.pptx
- 英语人教PEP版四年级(上册)Unit 6 Part B let's learn 1.pptx
- 道德与法治人教版二年级(上册)课件-3.11大家排好队部编版(共18张PPT).pptx
- 人美版美术七年级(上册)《黄山天下奇》课件1.pptx
文档评论(0)