哈夫曼数据结构实验报告

上传人:m**** 文档编号:483544696 上传时间:2023-02-16 格式:DOC 页数:8 大小:211.50KB
返回 下载 相关 举报
哈夫曼数据结构实验报告_第1页
第1页 / 共8页
哈夫曼数据结构实验报告_第2页
第2页 / 共8页
哈夫曼数据结构实验报告_第3页
第3页 / 共8页
哈夫曼数据结构实验报告_第4页
第4页 / 共8页
哈夫曼数据结构实验报告_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《哈夫曼数据结构实验报告》由会员分享,可在线阅读,更多相关《哈夫曼数据结构实验报告(8页珍藏版)》请在金锄头文库上搜索。

1、数据结构实验报告班级 : 姓 名 :学 号:E-mail:日 期 :实验题目 :? P149 哈夫曼编 / 译码器? 完成 Huffman 编码的译码过程。即输入一个码串,请翻译成相应的字符串。要求有 编码过程和解码过程。(一 ) 需求分析1.本程序中,输入是字符串,包括 +, -, *, / ,(, ),以及 09, 在输入的末尾需要加上 #作为标记。2演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息 ”之后,由用户在键盘上输入相应数据,若正确则输出正确结果,若运算无解,则输入error 。3程序执行的命令包括:(1)从文件读取字符和权值。(2)构建哈夫曼树。(3)输出构

2、建的哈夫曼树。(4)选择 1:对输入的字符串编码。(5)选择 2:对输入的数字译码。( 6)选择 0:结束。4测试数据输入A BGH输出 字母: A 编码: 1010字母:B 编码:100100字母:G 编码:100101字母:H 编码:0000字母编码: 110(二) 概要设计(三 ) 详细设计#include#include#includetypedef structint weight; arent=0)*s1=i;break;for(j=i+1;j=n;j+)if(htj.parent=0)*s2=j;break;for(i=1;ihti.weight) if(*s2!=i)*s1=i

3、;for(j=1;jhtj.weight)if(*s1!=j)*s2=j; if(*s1*s2)temp=*s1;*s1=*s2;*s2=temp;eight=wi-1;hti.parent=0;hti.lchild=0;hti.rchild=0;for(;i=m;+i)hti.weight=0;hti.parent=0;hti.lchild=0;hti.rchild=0;for(i=n+1;i=m;i+) select(ht,i-1,&s1,&s2);hts1.parent=i;hts2.parent=i; hti.lchild=s1;hti.rchild=s2;hti.weight=hts

4、1.weight+hts2.weight; arent;f!=0;c=f,f=htf.parent)child=c) cd-start=0;else cd-start=1;hc hci=(char*)malloc(n-start)*sizeof(char); / 为第 i 个字符编码分配空间 strcpy(hci,&cdstart); / 从 cd 复制编码(字符串)到void bianma(char p,char s,huffmancode hc)/ 编码 int i,j;for (i=0;pi!=0;i+)for (j=0;j27;j+)if (pi=sj)%sn,pi,hcj+1);译码

5、printf( 字母: %c 编码: break;printf(nn);return ;void yima(char str,char s,huffmancode hc)/int j,t=0;char *p,*r,*m;p=str;m=str;for (;*p=0;)for (t=0,j=1;j=27;j+)r=hcj;while (*p=*r & *p!=0) p+,r+,t+;if (*r=0) printf(%cn,sj-1); break;p=m;t=0;p=m+t;m=p;printf(nn);return ;int main()/ 主函数int i=0,n=27,m;int *w;

6、char s27,p100;huffmantree ht;huffmancode hc; hc=(huffmancode)malloc(n*sizeof(huffmancode); w=(int *)malloc(n*sizeof(int);FILE *fp= fopen(,r);while(!feof(fp)fscanf(fp,%c %dn,&si,&wi);i+; huffmancoding(ht,hc,w,n); printf( 输出编码为: n);for(i=0;i06恥5届rarararaMMrararaMra細raraMra細wlraM(五)、实验总结(实验心得)只要构造好哈夫曼树,剩下的就相对简单了。表示算法和思路最好用图来表示,既容易理解,也有清晰的思路。运算符也可以用二维数组来表示,理论上bug少些。一个程序的测试,既要考虑一般情况,还要考虑极端情况。 要不断的调试,独立解决 bug。教师评语:实验成绩:指导教师签名:批阅日期:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号