ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:272.94KB ,
资源ID:12519894      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12519894.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(哈弗曼大数据结构专题实验报告材料.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

哈弗曼大数据结构专题实验报告材料.docx

1、哈弗曼大数据结构专题实验报告材料数据结构与程序设计专题实验报告: 学号: 班级:信息45班: 学号: 班级:信息45班: 学号: 班级:信息45班实验指导老师:峰实验地点: 西一楼一层计算机中心机房实验结束日期:12月5日联系: 一实验任务: 对于给定的源文档 SourceDoc.txt, 1) 统计其中所有字符的频度(某字符的频度等于其出现的总次数除以总字符数),字符包括字母(区分大小写)、标点符号及格式控制符(空格、回车等)。 2) 按频度统计结果构建哈夫曼编码表。 3) 基于哈夫曼编码表进行编码,生成对应的二进制码流,并输出到文件 Encode.dat,完成信源的编码过程。 4) 根据生

2、成的哈夫曼编码表,对二进制码流文件 Encode.dat 进行解码,把结果输出到文件 TargetDoc.txt,完成信源的解码过程。 5) 判断 TargetDoc.txt 与 SourceDoc.txt 容是否一致,以 验证编解码系统的正确性。二实验容: 1) 线性链表的构建以及排序;2) 哈夫曼树的构建;3) 基于哈夫曼码进行编码;4) 对二进制码进行解码;5)对生成文件与原文件进行比较;三程序的算法描述四程序运行结果:五源程序代码:#include#include#include#include typedef struct aachar data; double rate; int

3、count; struct aa *next; struct aa *pre; char haffmancode120;NODE;NODE *creat(char b) NODE *h, *p, *s,*death;int i;h=(NODE*)malloc(sizeof(NODE);p=(NODE*)malloc(sizeof(NODE);h-next=p;h-pre=NULL;p-pre=h;p-next=NULL;p-data=b0; p-count=1.0;for(i=1;bi!=0;i+)s=(NODE*)malloc(sizeof(NODE);s-data=bi; s-count=

4、1.0;s-next=NULL; s-pre=p;p-next=s;p=s;return h; void fun(NODE* h,int amount) NODE *p,*q,*death; for(p=h-next;p;p=p-next) for(q=p-next;q;) if(q-data=p-data) (p-count)+; if (q-next = NULL) q-pre-next = NULL; free(q); break; else q-pre-next=q-next; q-next-pre=q-pre; death=q; q=q-next; free(death); else

5、 q=q-next; (p-rate)=1.0*(p-count)/amount;/printf(%c:t%dt%fn,p-data,p-count,p-rate);puts(构建链表完成n); void outlink(NODE* h,int *n)/printf(%d,amount); NODE* p=(NODE*)malloc(sizeof(NODE); NODE* s=(NODE*)malloc(sizeof(NODE); int i; char ch; double r;for(p=h-next;p;p=p-next) for(s=p-next;s;s=s-next) if(s-co

6、unt p-count) i=p-count; p-count=s-count; s-count=i; ch=p-data; p-data=s-data; s-data=ch; r=p-rate; p-rate=s-rate; s-rate=r; p=h-next;while(p)/printf(%c:t%dt%fn,p-data,p-count,p-rate);(*n)+;p=p-next; puts(排序完成n);typedef struct NODE body; int lchild,rchild,parent; struct Treenode *next;HTNode, *Tree;t

7、ypedef char *Huffmancode;void select(Tree &HT,int n,int & s1,int &s2) int i,j; for(i = 1;i = n;i+) if(!HTi.parent)s1 = i;break; for(j = i+1;j = n;j+) if(!HTj.parent)s2 = j;break; for(i = 1;i HTi.body.rate)&(!HTi.parent)&(s2!=i) s1=i; for(j = 1;j HTj.body.rate)&(!HTj.parent)&(s1!=j) s2=j; void Huffma

8、ncoding(Tree &HT, Huffmancode &HC, int n,NODE *head,int *wei)HTNode *p; int m=2*n-1,i;int s1,s2;NODE *L=head-next;HT=(Tree)malloc(m+1)*sizeof(HTNode);for(p=HT+1,i=1;ibody=*L; L=L-next; p-lchild=0; p-parent=0; p-rchild=0; for(;ibody.rate=0; p-lchild=0; p-parent=0; p-rchild=0; for(i=n+1;i=m;i+)select(

9、HT,i-1,s1,s2); HTs1.parent=i; HTs2.parent=i; HTi.lchild=s1; HTi.rchild=s2; HTi.body.rate=HTs1.body.rate+HTs2.body.rate;for(i=n+1;i=m;i+)if(HTi.parent=0)*wei=i;HC=(Huffmancode)malloc(n+1)*sizeof(char *); char * temp=(char *)malloc(n*sizeof(char); tempn-1=0; for(i=0;in;i+) int start=n-1; for(int f=HTi

10、.parent,h=i;f;h=f,f=HTf.parent)if(HTf.lchild=h)temp-start=0; elsetemp-start=1;/HCi=(char *)malloc(n-start)*sizeof(char); strcpy(HTi.body.haffmancode,&tempstart);free(temp);FILE *fw;fw=fopen(Statistic.txt,wt);for(i=1;inext; while(L) i=0; while(idata=HTi.body.data) strcpy(L-haffmancode,HTi.body.haffma

11、ncode); i+; L=L-next;char cp=fgetc(fp); while(cp!=EOF) L=h-next; while(cp!=L-data) L=L-next; strcat(pp,L-haffmancode); cp=fgetc(fp); /printf(%snn,pp);i=0;while(ppi!=0) n=0; while(n15&ppi!=0) if(ppi=1) tj=tj|1; if(n!=14&ppi+1!=0)tj=tj=0) double a=pow(2,n); if(tj&(int)a)=(int)a) qqi=1; else qqi=0; n-;

12、 i+; j+;n=last-1;while(n=0)double a=pow(2,n); if(tj&(int)a)=(int)a) qqi=1; else qqi=0; n-;i+;qqi=0;/printf(%s,qq); int root=*wei; char c; i=0; while(qqi!=0) c=qqi; if(qqi=0) root=HTroot.lchild; else root=HTroot.rchild; if(HTroot.rchild=0&HTroot.lchild=0) fprintf(ft,%c,HTroot.body.data); root=*wei; i

13、+; puts(解码完成,Target.txt文件生成n);bool compare(FILE *fp,FILE *ft) rewind(fp); char ch1=fgetc(fp); char ch2=fgetc(ft); while(ch1!=EOF&ch2!=EOF) if(ch1!=ch2) break; ch1=fgetc(fp); ch2=fgetc(ft); return ch1=ch2&ch1=EOF? true:false;int main() FILE *fp; char ch; intt=0; char b10000; if(fp=fopen(source.txt,rt

14、)=NULL) printf(ncan not open file); return 0; ch=fgetc(fp); while(ch!=EOF) ch=fgetc(fp); bcnt = ch; t +; FILE *fw; fw=fopen(Encode.dat,wb); if(!fw) printf(NO SPACE %sn); return 0; int amount=strlen(b);int n=0,m=2*n-1,i;NODE *head;head=creat(b);fun(head,amount);outlink(head,&n);Tree HT;char *HC;float

15、 temp;int wei;HT=(Tree)malloc(m+1)*sizeof(HTNode);HC=(Huffmancode)malloc(n)*sizeof(char *);Huffmancoding(HT,HC,n,head,&wei);FILE *ft; ft=fopen(Target.txt,wt); if(!ft) printf(NO SPACE FOR Target.txt); return 0; putdat(head,fp,ft,fw,HT,&wei,&n); fclose(ft); fclose(fp); if(!ft) printf(NO SPACE FOR Targ

16、et.txt); return 0; fclose(ft); FILE *ftnew; ftnew=fopen(TargetDoc.txt,rt+); bool result=compare(fp,ftnew); if(result=true) puts(目标文件与原文件一致n); else puts(目标文件与原文件不一致n); fclose(ftnew); system(pause); return 0; 六实验总结: 从程序的编写来看,感觉这次自己真的学到了好多,特别是对程序的开发流程。从最初的选定程序,到最终的程序运行成功,其中遇到了很多问题,解决了好多问题,让我感到如果是仅仅掌握课本

17、上的知识是远远不能够很好的应用到实际的编程中去的。在这个过程中还需要我们更多的去考虑到实际条件的种种限制和约束。 总之,经过本次专业课程设计,让我们对数据结构以及C语言掌握更加深入,让我掌握了开发应用软件的基本流程,运用所学编程技能的基本技巧,也让我初步了解了软件设计的基本方法,提高进行工程设计的基本技能及分析、解决实际问题的能力,为以后毕业设计和工程实践等打下良好的基础。相信通过这次的课程设计,我对所学的数据结构(C语言版)和各种编程语言都有了一个全新的认识。我也会积极吸取本次课程设计的经验,继续研究数据结构和所学的各种编程语言。七致词: 值此实验完成之际,首先要感指导教师峰、顿玉洁老师。老师从一开始就非常耐心的对我们进行指导。给我提供了大量建议,告诉我应该注意的细节问题,细心的给我指出错误。他们对数据结构程序设计专题深刻的见解,使我受益匪浅。峰、顿玉洁老师诲人不倦的工作作风,一丝不苟的工作态度,严肃认真的治学风格给我们留下深刻的影响,值得我们永远学习。在此,谨向峰、顿玉洁老师致以崇高的敬意和衷心的感!其次,要感小组其他组员,我们一起解决困难、同舟共济,让我感受到了合作的力量,也让我意识到每一员对小组成功的重要性,你们!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1