版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1目哈夫曼编译器指导教师 学院信息科学与工程学院 2源代码………………12结点离根节点较近,权值较小的结点离根节点较远。法建立哈夫曼树时要进行多次选择,每次选择出权值最小和次小的两个节点,30,则走向左孩子,读到1,则走向右孩子。并将对应的子节点作为下一轮循环(1)建立哈夫曼树pfor(i=0;i<m;i++){tree[i]=newHuffmantree();}floatsmall1,small2;//建立哈夫曼树for(i=0;i<n;i++)//初始化叶节点,使每个叶结点都为独立的根节点{tree[i].parent=0;tree[i].lchild=-1;tree[i].rchild=-1;tree[i].weight=0;}for(i=0;i<n;i++)//将每种字符及其出现次数赋给叶节点,使每个叶节点对应一种字符{tree[i].ch=ch[i];tree[i].weight=arr[i];}for(i=n;i<m;i++)//由n个叶节点生成n-1个父节点{p1=0;p2=0;small1=10000;small2=100;for(j=0;j<i;j++)//选出权值最小与次小的两个节点if(tree[j].parent==0)4if(tree[j].weight<small1){small2=small1;small1=tree[j].weight;p2=p1;p1=j;}elseif(tree[j].weight<small2){small2=tree[j].weight;p2=j;}tree[p1].parent=i;//建立子节点与父节点间的对应关系,并将父节点权值赋为两子节点权值之和tree[p2].parent=i;tree[i].lchild=p1;tree[i].rchild=p2;tree[i].weight=tree[p1].weight+tree[p2].weight;}Code[]为定义在codetype类上的数组对象。intc,p;//编码部分,c为当前节点编号,p为其父节点编号Code=newCodetype[n];for(i=0;i<n;i++){Code[i]=newCodetype();Code[i].bits=newCharacter[n];}for(i=0;i<n;i++){Code[i].start=n;Code[i].ch=tree[i].ch;c=i;//start为编码位串的起始位置5p=tree[i].parent;while(p!=0){Code[i].start--;if(tree[p].lchild==c)//向上回溯编码Code[i].bits[Code[i].start]='0';elseCode[i].bits[Code[i].start]='1';c=p;p=tree[p].parent;}Code[i]=Code[i];//将父节点作为下一轮循环的子节点}(3)译码模块for(intq=0;q<t;q++){if(b[q]=='0')p=tree[p].lchild;elsep=tree[p].rchild;if(tree[p].lchild==-1){Stringym=tree[p].ch.toString();fw1.write(ym);p=m-1;}}(4)字符统计模块6for(inti=0;i<len;i++){//选出文章中每一种字符串for(intj=0;j<n;j++){if(a[i]==ch[j])break;elseif(j==n-1){ch[n-1]=a[i];//若ch[]中找不到a[i]中存放的字符,则将该种字符放到ch[]中。}}若找到,则说明该种字符已被存入ch[].break;}//初始化ch[],存放字符种类for(inti=0;i<len;i++)for(intj=0;j<n;j++){if(a[i]==ch[j])arr[j]++;//统计文章中每种字符的出现次数。}(5)Huffman类publicclassHuffmantree{publicintweight;publicintparent,lchild,rchild;//weight为节点的权值//分别为当前节点的父节点,左、右子节点编号publicCharacterch;//ch为节点名,即对应的字符。publicHuffmantree(){//初始化,每个节点构成一个单节点树,权值为0。weight=0;parent=0;lchild=-1;rchild=-1;ch='0';}(5)codetype类publicclassCodetype{publicCharacterbits[];//一维数组,存放每个字符对应的编码位串publicintstart;//start为每个字符位串的起始位置publiccharch;publicCodetype(){start=0;ch=0;}}}72.流程图1.su.fv,y,uewgbu;i;fewiu!2.WhenIwasalittlegirl,Idreamedtogrowup.BecauseIthinkachilddoesn'thasfreedom,andcan'tdoanythingbymyself.ButnowIhavegrowup,tomysurprise,Ifeelmoretiredandhavemoreresponsibility.ThoughIcandosomethingmyself,Idon'tfeelhappyatall.Ibelieveyoualsohavethesamethoughswithme.wheneveryuswasachild,wewantedtogrowup,butwhenwebecameaolderman,wedon'thavesuchnicelifeaswish.Sowhateverwearechildrenoradults,weshouldtrytomakeourlifebetter,andmakeourselvesmorehappy.weshouldtryourbesttostudy8hard,thenwecanletparentshavegoodlife,too!doourbesttodoourself!Believeyourself!Youarethebest!1.9体会通过本次实验,我复习了数据结构中常见的一种结构——树形结构,本次实件等操作上考虑不周,使程HuffmanepublicclassMain{publicstaticHuffmantreetreeblicstaticCodetypeCodepublicstaticvoidmain(String[]args)throwsException{ewcharFilefilenewFile"d:\\原文件.txt");leReaderfrnewFileReaderfilenewcharintfilelengthilenijnj}}Systemoutprintln;}}}n--;tree[i]=newHuffmantree();}floatsmallsmall哈夫曼树{}{}{p{}{}httreepweighttreepweight}wCodetypeneinewCodetypeeibitsnewCharactern}{eistartnCodeichtreei].ch;iparentwhilep=0){Code[i].start--;CodeibitsCodeistart'0';CodeibitsCodeistart'1';pparent}Codei}niSystemoutprintCodei].ch+":");forintrCodeistartrnr++)outprintCodeibitsrSystemoutprintln}FileWriterfwnewFileWriter"d:\\编码文件.txt");enklnlthCodelstarthnhgbmCodelbitshtoString}FilefilenewFile("d:\\编码文件.txt");FileReaderfrnewFileReaderfilechar[]b=newchar[(int)file1.length()];//将编码后的文件读入fr1.close();intt=b.length;p=m-1;//根节点FileWriterfw1=newFileWriter("d:\\译码文件.txt");for(intq=0;q<t;q++){if(b[q]=='0')p=tree[p].lchild;p=tree[p].rchild;if(tree[p].lchild==-1){gymtreepchtoStringp=m-1;}e}}publicclassHuffmantree{publicintweight;public
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心理素质训练方法
- 安置拆迁协议书户主是谁
- 三方退股协议书范本
- 大数据与税务管理
- 企业治安防范协议书
- 中学生的行为规范
- 外科:创面感染护理流程
- 慢性肾病防治指南
- 2026湖北咸宁市消防救援支队招录政府专职消防员、消防文员70人备考题库带答案详解(黄金题型)
- 2026黑龙江五大连池市乡镇卫生院招聘医学相关专业毕业生1人备考题库及一套参考答案详解
- 民用建筑外门窗应用技术标准
- 人类辅助生殖技术规范1;2
- 校园活动应急预案模板策划
- 装饰装修工程验收资料表格
- 【教案】伴性遗传第1课时教学设计2022-2023学年高一下学期生物人教版必修2
- 广州地铁3号线市桥站-番禺广场站区间隧道设计与施工
- LY/T 2602-2016中国森林认证生产经营性珍稀濒危植物经营
- GB/T 36024-2018金属材料薄板和薄带十字形试样双向拉伸试验方法
- GB/T 19518.2-2017爆炸性环境电阻式伴热器第2部分:设计、安装和维护指南
- 简化的WHOQOL表WHOQOL-BREF-生活质量量表
- JJG 700 -2016气相色谱仪检定规程-(高清现行)
评论
0/150
提交评论