版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件学院设计性实验报告专业:网络工程年级/班级:2023—2023学年第一学期课程名称数据结构指导教师本组成员学号姓名实验地点实验时间项目名称哈夫曼编/译码系统的设计与实现实验类型设计性一、实验目的理解哈夫曼树的特性及其应用:在对哈夫曼树进行理解的基础上,构造哈夫曼树,并用构造的哈夫曼树进行编码和译码;通过该实验,使学生对数据结构的应用有更深层次的理解。二、实验仪器或设备学院提供公共机房,1台/学生微型计算机。三、总体设计(设计原理、设计方案及流程等).问题描述:运用哈夫曼编码进行通信可以大大提高信道运用率,缩短信息传输时间,减少传输成本。但是,这规定在发送端通过一个编码系统对待传数据预先编码,在接受端将传来的数据进行译码(解码)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站设计一个哈夫曼编/译码系统。.一个完整的系统应具有以下功能:)初始化(Initialzation)。从数据文献DataFiledat中读入字符及每个字符的权值,建立哈夫曼树HuffTree;2)编码(EnC。ding)o用已建好的哈夫曼树,对文献ToBeTran.dat中的文本进行编码形成报文,将报文写在文献Code.ixl中;3)译码(Decoding)。运用己建好的哈夫曼树,对文献C。deFi1e.dat中的代码进行解码形成原文,结果存入文献Texlfile.txt中;4)输出(Output):输出DataFile.dat中出现的字符以及各字符出现的频度(或概率);输出ToBcTran.dat及其报文Codc.txt;输出CodeFilc.dat及其原文Tcxtfi1e.txt;
五、结果分析与总结1)在做这个实验时前期要做很多准备,由于这个实验操作很复杂,虽然老师已经讲过了大体构思和算法思想,课本上也有相关算法及其伪代码,但翻译成C语言的过程要注意语法等因素,所以要查找一些资料。2)对于不懂得地方要像其他同学虚心请教。3)哈夫曼编码很考验编程者的细心限度,并且涉及的问题也很复杂,培养了我们的细心和耐心。教师署名:
规定:所设计的系统应能在程序执行的过程中,根据实际情况(不同的输入)建立DataFile.dat、ToBeTran.dat和CodeFi1e.dat三个文献,以保证系统的通用性。四、实验环节(涉及重要环节、代码分析等)1)编写C语言程序inc1udc<string.h>inc1ude<maHoc.h>#include<stdio.h>inc1ude<iostream.h>include<math.h>defineTRUE1#define#define#defineI'ALSE#defineI'ALSEttdefineOK1#defineERROR0INFEASIBLEINFEASIBLEINFEASIBLE-1INFEASIBLE-1typedefstruct(hardata;intweight;ointparent,1child,rchi1d;}HTNode,*HuffmanTree;typedefchar^*HuffmanCode;voidHuffmanCoding(HuffmanTree&HT,HuffmanCode&HC,char*d,int*w,intn)〃构造哈弗曼函数HT,构造编码HCvoidselect(HuffmanTreeHT,intn,int&sl,int&s2);式ntm,c,f,j;HuffmanTreep;inti,s1,s2,start;char*cd;m=2*n-l;//m为结点数,n为叶子数HT=(Huffman?ree)maHoc((m+l)*sizeof(HTNode));叩=盯;中++;for(i=1;iV=n;i++,p++)//将叶子的值输入HT中(p->data=d[i];//={*d,*w,0,0,0};p->weight=w[i];ap—>parent=0;。p->lchild=0;»p->rchild=0;}for(i=n+l;i<=m;i++,p++)//二{'#',0,0,0,0)(op->data=';p—>weight=0;。p->parent=0;p->1child=0;M»p->rchild=O;}OS1=1;s2=2;for(i=n+l;i<=m;i++)〃构建哈夫曼树。se1ect(HT,i-1,s1,s2);HT[i].Ichiid=sl;HT[i].rchi1d=s2;»HT[i].weight=HT[sl].weight+HT[s2].weight;MT[s1].parent=i;HT[s2].parent=i;e)oHO(HuffmanCode)malloc((n+1)*sizeof(HuffmanTree));//开辟空间,编码acd=(char*)malloc(n*sizeof(char));cd[nT]='\0';for(i=l;i<=n;++i)°(»start=n-l;for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent)。{。lchild==c)°cd[start]='O';elsecd[—start]=,1)oHC[i]=(char*)malloc((n-start)*sizeof(char));strcpy(HC[i],&cd[start]);。printf(〃%c的编码是:",HT[i]);。puts(HC[i]);}free(cd);}voidselect(HuffmanTreeHT,intn,int&sl,int&s2)//求最小两数(ointi,t;%1=1;os2=2;®while(HT[s1].parent!=0)sl++;owhile((HT[s2].parent!=0)I(sl==s2))8s2++;/*for(i=l;i<=n;i++)°(if(HT[si].weight>HT[i].weight&&HT[i].parent==0&&s2!=i)<»sl=i;if(HT[s1].weight>HT[s2].weight)(。t=sl;sl=s2;s2=t;for(i=l;i<=n;i++)(if(sl!=i)oo{。if(HT[s2].weight>HT[i].weight&&HT[i].parent==O)。s2=i;)。}*/for(i=l;i<=n;i++)。(if(sl!=i&&i!=s2)°{if(HT[i].weight<HT[si].weight&&HT.parent-0&&i!=s2)f(HT[sl].weight<HT[s2].weight)s2=s1;
sl=i;)e1seaif(HT[i].weight<HT[s2].weight&&HT[i].parent-O&&sl!=i)。s2=i;。}o})voidtrans1ation(IIuffmanTree11T,intnum)(charstr[20];ointi,t=num;叩rintf(〃请输入由0或1组成的编码:〃);®cin>>str;o//t=HT;//t为树的指向各节点的指针ofor(i=0;i<(str1en(str));i++)°{if(str[i]==,0')at=HTLt].Ichild;◎else®if(str[i]二二'1,)3t=IIT[t].rchild;。else2I000000printf(〃编码输入错误00printf(〃编码输入错误”);(printf("%c〃,HT[t].data);gl=num;a})printf(〃\n〃);}voidmain()(voidHuffmanCoding(HuffmanTree&HT,HuffmanCode&HC,chard口,intw口,intn);voidtranslation(HuffmanTreeHT,intnum);HuffmanTreeHT=NULL;HuffmanCodeHC=NULL;®chardata,n,*p,*d;int*w,wei,i,num;printf("pleaseintputcharacternumber:");oscanf("%d〃,&n);®d=(char*)ma1loc((n+l)*sizeof(char));ow=(int*)ma1loc((n+1)*sizeof(int));printf(H请输入Huffman树中的字符:\n〃);for(i=1;iV=n;i++)。cin>>data;d[i]=data;}oprintf("请输入%d次位权\n:〃,n);for(i=1;i<=n;i++)。(”in>>wei;w[i]=wei;0)num=2*n—1;Huffm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 1.1地球的自转和公转 第三课时 教案-2022-2023学年高中地理人教版(2019)选择性必修1
- 2026年牡丹江市东安区医疗系统事业编人员招聘笔试参考题库及答案详解
- 2026年兰州市七里河区工会人员招聘考试参考题库及答案详解
- 2026福建南平建瓯市疾病预防控制中心招聘驾驶员1人笔试模拟试题及答案详解
- 第一季度职工思想分析报告(3篇)
- 2026年桂林市象山区工会人员招聘考试参考试题及答案详解
- 2026年青岛市崂山区政务服务中心(窗口人员)招聘笔试模拟试题及答案详解
- 2026年河源市源城区工会人员招聘考试参考试题及答案详解
- 2026年佛山市顺德区医疗系统事业编人员招聘笔试备考题库及答案详解
- 校园安全广播稿
- 消化内科炎症性肠病诊疗指南技术操作规范
- 采煤工作面技术管理培训课件
- 2026国有企业管理岗竞聘笔试题及答案
- 2026年高考全国1卷语文高考真题含答案
- 2026年军队文职营房管理面试面试宝典
- 2026年广东省危险废物处理行业分析报告及未来发展趋势报告
- 2026云南曲靖经济技术开发区综合保障局招聘城镇公益性岗位人员3人考试参考题库及答案解析
- 重大事故隐患整改报告的模板
- 安徽宣城市2025-2026学年高一上学期期末检测物理试题(原卷版)
- 2026中信证券IT数据岗笔试题及答案考点速记版
- 鸿蒙应用开发认证考试题库及答案
评论
0/150
提交评论