好文档 - 专业文书写作范文服务资料分享网站

数据结构课程设计哈夫曼编码

天下 分享 时间: 加入收藏 我要投稿 点赞

Select(HT,i-1,&p1,&p2); HT[p1].parent=i;HT[p2].parent=i; HT[i].lchild=p1;HT[i].rchild=p2; HT[i].weight=HT[p1].weight+HT[p2].weight; } HC=(hfmcode)malloc((n+1)*sizeof(char *)); cd=(char *)malloc(n*sizeof(char)); cd[n-1]='\\0'; for(i=1;i<=n;++i) //给n个字符编码 { start=n-1; for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent) { if(HT[f].lchild==c) { cd[--start]='0'; } else { cd[--start]='1'; } } HC[i]=(char*)malloc((n-start)*sizeof(char)); strcpy(HC[i],&cd[start]); } free(cd); }

int main(){ char code[100],h[100],hl[100]; int n,i,j,k,l; ifstream input_file; //文件输入输出流 ofstream output_file; char choice,str[100]; hfmtree HT; hfmcode HC; cout<<\ cout<<\ \计算机(3)班\ \ \ while(choice!='Q'&&choice!='q') //当choice的值不为q且不为Q时循环 {

11

cout<<\ \赫夫曼编码/译码器*************************\\n\ cout<<\ \ \ \ \ cout<<\请输入您要操作的步骤:\ cin>>choice; if(choice=='I'||choice=='i') //初始化赫夫曼树 { cout<<\请输入字符个数:\ cin>>n; hfmcoding(HT,HC,n); for(i=1;i<=n;++i) { cout<

12

for(i=0;i>code; cout<<\编码码值为:\ input_file.close(); } else if(choice=='D'||choice=='d') //读入CodeFile.txt中的编码进行译码,将译出来的字符放入Textfile.txt中 { input_file.open(\ if(!input_file){ cout<<\ return 1; } input_file>>h; input_file.close(); output_file.open(\ if(!output_file) { cout<<\ return 1; } k=0; while(h[k]!='\\0') //先用编码中的前几个和字符的编码相比较,然后往后移 { for(i=1;i<=n;i++){ l=k; for(j=0;j

13

}

hl[j]=h[l]; } hl[j]='\\0'; if(strcmp(HC[i],hl)==0) { output_file<>h; cout<

else if(choice=='Q'||choice=='q') //退出程序 { exit(0); }

else //如果选了选项之外的就让用户重新选择 { cout<<\您没有输入正确的步骤,请重新输入!\ } cout<

return 0;

14

六.调试分析

编码

、译码

、退出

15

数据结构课程设计哈夫曼编码

Select(HT,i-1,&p1,&p2);HT[p1].parent=i;HT[p2].parent=i;HT[i].lchild=p1;HT[i].rchild=p2;HT[i].weight=HT[p1].weight+HT[p2].weight;}HC=(hfmcode)malloc((n+1)*sizeof(char*));cd=(char
推荐度:
点击下载文档文档为doc格式
0a0gv1723y3gzju6v8pp
领取福利

微信扫码领取福利

微信扫码分享