云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 数据结构(C语言版)实验报告(哈夫曼树)

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

  • 62 次阅读
  • 3 次下载
  • 2025/6/14 10:50:47

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; }

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

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<>sel; if(sel==3) break; switch(sel) {case 1:openfileDeco();break; case 2:inputDeco();bre

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com