电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

哈夫曼数据结构试验报告VIP专享VIP免费

哈夫曼数据结构试验报告_第1页
哈夫曼数据结构试验报告_第2页
哈夫曼数据结构试验报告_第3页
《数据结构》实验报告班级 : 姓 名: 学 号: E-mail: 日 期 :◎实验题目 :?P149 哈夫曼编 /译码器?完成 Huffman 编码的译码过程。即输入一个码串,请翻译成相应的字符串。要求有编码过程和解码过程。(一) 需求分析1.本程序中,输入是字符串,包括‘+’,‘ -’,‘ *’,‘ / ’,‘(’, ‘)’,以及0~9,在输入的末尾需要加上‘#’作为标记。2.演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息 ”之后,由用户在键盘上输入相应数据,若正确则输出正确结果,若运算无解,则输入‘error ’。3.程序执行的命令包括:(1)从文件读取字符和权值。(2)构建哈夫曼树。(3)输出构建的哈夫曼树。(4)选择 1:对输入的字符串编码。(5)选择 2:对输入的数字译码。(6)选择 0:结束。4.测试数据输入1A BGH输出字母: A 编码: 1010字母:编码: 110字母: B 编码: 100100字母: G 编码: 100101字母: H 编码: 0000(二) 概要设计(三) 详细设计#include<>#include<>#include<>typedef struct{int weight; arent==0){*s1=i;break;}for(j=i+1;j<=n;j++)if(ht[j].parent==0){*s2=j;break;}for(i=1;i<=n;i++) arent==0) if(ht[*s1].weight>ht[i].weight)if(*s2!=i)*s1=i;}for(j=1;j<=n;j++) arent==0)if(ht[*s2].weight>ht[j].weight)if(*s1!=j)*s2=j;}if(*s1>*s2){temp=*s1;*s1=*s2;*s2=temp;}}eight=w[i-1];ht[i].parent=0;ht[i].lchild=0;ht[i].rchild=0;}for(;i<=m;++i){ht[i].weight=0;ht[i].parent=0;ht[i].lchild=0;ht[i].rchild=0;}for(i=n+1;i<=m;i++){select(ht,i-1,&s1,&s2); 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;}arent;f!=0;c=f,f=ht[f].parent) child==c) cd[--start]='0';else cd[--start]='1';}hc[i]=(char*)malloc((n-start)*sizeof(char)); // 为第 i 个字符编码分配空间strcpy(hc[i],&cd[start]); // 从 cd 复制编码(字符串)到hc} }void bianma(char p[],char s[],huffmancode hc)//编码{int i,j;for (i=0;p[i]!='\0';i++){for (j=0;j<27;j++){if (p[i]==s[j]){printf(" 字母: %c 编码: %s\n",p[i],hc[j+1]);break;}}}printf("\n\n");return ;}void yima(char str[],char s[],huffmancode hc)//译码{int j,t=0;char *p,*r,*m;p=str;m=str;for...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部