- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
二叉树两种存储的应用
?
数据结构实验
?
实验四
?
二叉树两种存储结构的应用?
?
?
计算机科学与技术系0901班
日 期:2011年5月5日
?
?
实验报告
2009级 0901班 2011年5月5日
实验类型:综合设计型 实验地点:软件实验室三
一 ?????????????实验题目
二 ?????????????需求分析
三 ?????????????概要设计
四 ?????????????详细设计2009100145
编码
ofstream fop(CodeFile.dat,ios::trunc); //打开码文存放文件
char *code;
code=new char[LeafNum]; //存放一个源文字符的编码
int k=0;
while(SourceText[k]!=\0) //源文串中从第一个字符开始逐个编码
{
int star=0;
char ch=SourceText[k];
for(int i=0;iLeafNum;i++)
if(Info[i]==ch)//求出该文字所在的单元编号
break;
int j=i;
while(Node[j].parent!=-1)
{
j=Node[j].parent;
if(Info[Node[j].lchild]==Info[i]) code[star++]=0;
else code[star++]=1;
i=j;
}
code[star]=\0;
for(i=0;istar/2;i++)
{
int j=code[i];
code[i]=code[star-i-1];
code[star-i-1]=j;
}
i=0; //将源文的当前字符的对应编码写入码文文件
while(code[i]!=\0)
{
fopcode[i];
i++;
}
k++; //源文串中的字符后移一个
}
fop.close();
cout已完成编码,码文已写入文件CodeFile.dat中。\n\n;
}
//2009100136
译码
ifstream fip1(CodeFile.dat);
if(fip1.fail())
{
cout没有码文,无法译码。\n;
return;
}
char* CodeStr;
int k=0;
char ch;
while(fip1.get(ch))
{
k++;
}
fip1.close();
CodeStr=new char[k+1];
ifstream fip2(CodeFile.dat);
k=0;
while(fip2.get(ch)) CodeStr[k++]=ch;
fip2.close();
CodeStr[k]=\0;
cout经译码得到的源文为:;
ofstream fop(TextFile.dat);
int j=LeafNum*2-1-1; //j指向哈夫曼树的根
int i=0; //码文从第一个符号开始,顺着哈夫曼树由根下行,按码文的当前符号决定下行到左孩子还是右孩子
while(CodeStr[i]!=\0)
{ //下行到哈夫曼树的叶子结点处,则译出叶子结点对应的源文字符
if(CodeStr[i]==0) j=Node[j].lchild;
else j=Node[j].rchild;
if(Node[j].rchild==-1)
{
coutInfo[j];
fopInfo[j];
j=LeafNum*2-1-1;
}
i++;
}
fop.close();
//2009100122
显示哈弗曼树
void HuffmanTree::PrintCodeFile()
{
char ch;
int i=1;
ifstream fip(CodeFile.dat);
ofstream fop(CodePrin.dat);
if(fip.fail())
{
cout没有码文文件,无法显示
文档评论(0)