第一范文网 - 专业文章范例文档资料分享平台

数据结构(C语言版)实验报告(哈夫曼树)

来源:用户分享 时间:2025/5/19 7:15:49 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

void decode(){ //选择译码方式 int sel=0; for(;;){

if(!HT) {cout<<\对不起,哈夫曼树不存在!请先建立哈夫曼树。\ cout<<\ cout<<\ \要译码的文件来源\\t\\t\\t\\t\\t*\

cout<<\使用已有文件CodeFile.txt进行译码\\t\\t*\ cout<<\自行输入文件进行译码\\t\\t\\t\\t*\ cout<<\返回上层\\t\\t\\t\\t\\t*\

cout<<\ cout<<\请输入您的选择\ \ cin>>sel;

if(sel==3) break; switch(sel)

{case 1:openfileDeco();break; case 2:inputDeco();break;

default:cout<<\对不起,您输入的数据有误!请重新输入。\ } }

void inputDeco(){ //通过手动输入的方式进行译码 int m=2*n-1;

char *password=(char *)malloc(200*sizeof(char)); cout<<\ 请输入要译码的文件(以$结束)\

for(int i=1;i<200&&password[i-1]!='$';i++) cin>>password[i]; if(i==200) {

password=(char *)realloc(password,(200+80)*sizeof(char)); for(;i<280&&password[i]!='$';i++) cin>>password[i]; }

cout<<\译码结果为(#代表空格)\ //outstuf.close();

outstuf.open(\ for(i=1;password[i]!='$';){ char record[20];

for(int j=0,q=i;password[q]!='$';j++,q++){

if(password[q]=='0') {record[j]='0';m=HT[m].lchild;} else {record[j]='1';m=HT[m].rchild;}

if(HT[m].rchild==0) {record[j+1]='\\0';break;} }

if(HT[m].rchild!=0) {cout<

for(int p=1;p<=n;p++){ if(!strcmp(record,HC[p])) {outstuf<

}

i=i+strlen(record); m=2*n-1; }

cout<

void openfileDeco(){ //通过打开文件CodeFile.txt的方式进行译码 int m=2*n-1;

cout<<\ CodeFile.txt文件内容如下:\ ifstream infile(\ if(!infile){

cerr<<\ exit(1); }

char *password=(char *)malloc(200*sizeof(char)); for(int i=1;infile.eof()==0&&i!=200;i++){ infile>>password[i]; cout<

password=(char *)realloc(password,(200+80)*sizeof(char)); for(;infile.eof()==0&&i!=280;i++){

infile>>password[i]; cout<

password[++i]='$'; cout<

cout<<\译码结果为(#代表空格)\ //outstuf.close();

outstuf.open(\ for(i=1;password[i]!='$';){

char record[20];

for(int j=0,q=i;password[q]!='$';j++,q++){

if(password[q]=='0') {record[j]='0';m=HT[m].lchild;} else {record[j]='1';m=HT[m].rchild;}

if(HT[m].rchild==0) {record[j+1]='\\0';break;} }

if(HT[m].rchild!=0) {cout<

for(int p=1;p<=n;p++){

if(!strcmp(record,HC[p])) { outstuf<

i=i+strlen(record); m=2*n-1; }

cout<

void dispHT( HuffmanTree nodeRoot, int level ) {//以缩进方式输出哈夫曼树

if(HT==NULL) return; if(nodeRoot->rchild) {

dispHT(HT+nodeRoot->rchild,level+1); }

for(int i=0;iweight<weight<lchild!=0 ) {

dispHT(HT+nodeRoot->lchild,level+1); } }

int main(){ int sel=0;

cout<<\欢迎使用哈夫曼编码/译码器<-\ for(;;){

cout<<\ cout<<\构建哈夫曼树\\t\\t\\t\\t\\t*\ cout<<\输出哈夫曼树\\t\\t\\t\\t\\t*\ cout<<\编码\\t\\t\\t\\t\\t\\t*\ cout<<\译码\\t\\t\\t\\t\\t\\t*\ cout<<\退出\\t\\t\\t\\t\\t\\t*\

cout<<\ cout<<\请输入您的选择(1-5)\ \ cin>>sel;

if(sel==5) break; switch(sel)

{case 1:initHuffmanTree();break; case 3:encoding();break;

case 2:{if(HC==NULL) cout<<\对不起,哈夫曼树不存在!请先建立哈夫曼树。\ else {outstuf.open(\ dispHT(HT+2*n-1,1);outstuf.close();}break;}

case 4:decode();break;

default:cout<<\对不起,您输入的数据有误!请重新输入。\ } } outstuf.close(); cout<<\感谢使用本系统!--------------------------------\ return 0; }

数据结构(C语言版)实验报告(哈夫曼树).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c9crjj4ef0d6c4ro7pooy_7.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top