哈夫曼编码解码实验报告_第1页
哈夫曼编码解码实验报告_第2页
哈夫曼编码解码实验报告_第3页
哈夫曼编码解码实验报告_第4页
哈夫曼编码解码实验报告_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

WordWord文档哈夫曼编码解码实验.实验要求掌握二叉树的相关概念掌握构造哈夫曼树,进行哈夫曼编码。对编码内容通过哈夫曼树进行解码。.实验内容通过二叉树构造哈夫曼树,并用哈夫曼树对读取的txt文件进行哈夫曼编码。编码完成后通过哈夫曼树进行解码。#include<stdio.h>#include<string.h>#defineMAX100//定义哈夫曼树的存储结构typedefstruct{chardata;intweight;intparent;intlch;intrch;}HuffNode;//定义哈夫曼编码的存储结构typedefstruct{charbit[MAX];intstart;}HuffCode;HuffNodeht[2*MAX];HuffCodehcd[MAX];intCoun[127]={0};intn;chars1[200000];chartext[5000];//构造哈夫曼树voidHuffmanTree(){inti,jKleft,right,min1,min2;//printf("输入叶子的节点数:");〃scanf("%d",&n);printf("字符数量=%d\n",n);for(i=1;i<=2*n-1;i++){ht[i].parent=ht[i].lch=ht[i].rch=0;}j=0;for(i=1;i<=n;i++){/*getchar();printf("输入第%d个叶子节点的值:",i);scanf("%c",&ht[i].data);printf("输入该节点的权值:");scanf("%d",&ht[i].weight);*/for(;j<127;j++){if(Coun[j]!=0){ht[i].data=j;〃printf("%c",ht[i].data);ht[i].weight=Coun[j];〃printf("%d",ht[i].weight);break;}}j++;}printf("\n");for(i=1;i<=n;i++){printf("%c",ht[i].data);}printf("\n");for(i=n+1;i<=2*n-1;i++){//在前n个结点中选取权值最小的两个结点构成一颗二叉树min1=min2=10000;〃 为min1和min2设置一个比所有权值都大的值left=right=0;for(k=1;k<=i-1;k++)if(ht[k].parent==0)//若是根结点//令mini和min2为最小的两个权值,left和right为权值最小的两个结点位置if(ht[k].weight<min1){min2=min1;right=left;min1=ht[k].weight;left=k;}elseif(ht[k].weight<min2){min2=ht[k].weight;right=k;}}ht[left].parent=i;ht[right].parent=i;ht[i].weight=ht[left].weight+ht[right].weight;ht[i].lch=left;ht[i].rch=right;}}//构造哈夫曼编码voidHuffmanCode(){inti,c,k,f;HuffCodecd;for(i=1;i<=n;i++){cd.start=n;c=i;f=ht[i].parent;while(f!=0){if(ht[f].lch==c)cd.bit[cd.start]='0';elsecd.bit[cd.start]='1';cd.start--;c=f;f=ht[f].parent;}hcd[i]=cd;}printf("输出哈夫曼编码:\n");for(i=1;i<=n;i++){printf("%c:",ht[i].data);for(k=hcd[i].start+1;k<=n;k++)printf("%c",hcd[i].bit[k]);printf("\n");}}//对字母进行编码voidCode()〃将字符与相应的哈夫曼编码进行匹配,输出编码结果{inti=0,j,k,h=0;while(text[i]!='\0'){for(j=1;j<=n;j++){if(text[i]==ht[j].data){for(k=hcd[j].start+1;k<=n;k++){s1[h]=hcd[j].bit[k];h++;}break;}}i++;}//printf("编码\n");//puts(s1);〃printf("\n");}〃解码voidHuffmanDecode(){printf("解码\n");intlen,i,f;charC;//charS[MAXCODE];〃scanf("%s",S);〃使用gets()直接跳过len=strlen(s1);printf("s1:%d\n",len);f=2*n-1;for(i=0;i<len;i++){if(s1[i]=='0'){f=ht[f].lch;if(ht[f].lch==0&&ht[f].rch==0){C=ht[f].data;printf("%c",C);f=2*n-1;}}elseif(s1[i]=='1'){f=ht[f].rch;if(ht[f].lch==0&&ht[f].rch==0){C=ht[f].data;printf("%c",C);f=2*n-1;}}}printf("\n");}//统计字母个数及其权值voidCount(){inti,j,m;n=0;i=0;//printf("请仅输入小写字母\n");〃例程本省存在一个 BUG,只输入一个字母不能进行编码(并未解决)〃scanf("%s",s);while(text[i]!='\0')〃使用ASCII码表进行统计{m=text[i];〃printf("%d'n",m);Coun[m]++;i++;}for(j=0;j<127;j++){if(Coun[j]!=0)n++;}}//markCodevoidmain(){intl=0;FILE*fp;fp=fopen("text.txt","r");if(fp==NULL){printf("文件打开失败\n");while(1);}while(!feof(fp)){text[l]=fgetc(fp);l++;}printf("输入文本\n");printf("%s\n",text);fclose(fp);Count();

HuffmanTree();HuffmanCode();Code();HuffmanDecode();}文本文件I -a>自文1!|锁3Ei他党PC里春¥1如土孙~|lnLhob«g.inrkLng,『口dcirciatediLBighcik-vo-iusandtJuaoarth.Nuiwttwua1371tmvasforaduse3lm1DitptjrvdarkrKissjwiiistivor t;哼f*《廿中fUwtlouprLhuSpiritofGud,热后htwyrlH麟a¥wrUh甘w-i^eTu,AntiGudsild^*LuljthftTfib<ilifht..findThm-nwn-n1ight.Gnrinavthatrhnlightwsfvgn力d%ariidIhn万thn11(httfrcnn5theriarfcneBg.Godcalledt¥)elight"r1av."mdlThedurtnesstiecallednight■*ArwithereW4*5evenink*and,*匕电广电wa£Kxrdiia^tiieflrsi:d*y.MdG&d尊£心*LfittbezebeanSlpau^eb电th电电近tbe看a电白/目toSeparatetruuLwitw-*SaGadwuleth#«£>«us«AmiflapaitiviHlh«vtt«r皿ul・iIhwvip«Eui«fruHLthwWit«rlaboveiit」Ariditns0口&&od©ailedIhae3k£xeb*sJtv.*Andth&rawaseve口Weul8adtheir日wasjaomirLfl-lheHhsecLArjdd^y.AndCud.uald.*Lelthe圃&lwruridtfrtheukybegatheredLuunjepl&cze.aevlHutdLry^ruurij,巾例>■X•『4"AndiI<4isjac.GihI已♦llrdithrdrvgr<iwiil*1indt*anilUn?gathrired.wttlt?rfliwcml1rd"»e*J3**Arul5Gnricavtlhaiitvasf^arKLThonGrid]eai.dig,七口心电halandpradutzo-raj^Qtation;EPiiilfn=irinRplanti;and.jnomthe1-andthatbearfruitwith石里日4init3accorditcthBirvariouskimis.Andiitwasso.The113rid■pruihii^iMlyusutJitiun;pljiriu;butririj蹴uQrt^ctndli/ittothoirKim肺牙庖&irsucbt^riongfruitwiuheu电HinIitrtccn<rdin(:tnthmirkinri靠口AndGodfiftwthatitw«fT$nnd・AtwItlinrn,■口HreniriEiaridthfirnmnEmcmiinB-1hethirdday.AndGodSRidlP"Lettherebe1igiltsintheexpanseoftheskytoseparatetheday3Iruntbrij口iUit.«Qd1上tiheB^tirv#dH修iuiwttiuukik *ud山andyeubaaiulIhEbelightuEifj5。u*口修口口。ofthoofcyto帛i*Qli£iilonthe^arth.*Anditwasbq.弓口心MdoEwu时山・工UfUit此-th中ereater1!ig]nitoGovernthe口或yamiIKieleaser11ght1口eavemtl)史nlfiht.Blealsooiailethestars.God5e4Uie・ailtJ^iEE±paixsi±ofLheakytog.i・u1ightcheitheeartliipLtigisTerratiiEdaamitJleo.i.^ht3,anilt.diSunpair4,t«lig111kfrnndsrknwe.AnilCud口i■甯Ih-itii,耳口f(ncd.AtkILhnruvasEwi呻」nrHitlmru■\二»iranmins-tthRfuurthday.AndfiindniidR*LwtthnwatwrIrrhwithtiTinscrsaWrHFB.and1日1birrtsflymhm耶.ihu:earthqcraEEthecxpaci^entthe“1%SoGodGrBat^dthektmtcrontJzriBSufth”andevery1itins*mnrimivifhinsvit-hwhichthowD,tortoowi5A&cnrdingtothairkindotsriidavott*fis>dbirdftcconlingItoitskind.AndGadsavthatitnsgrrnd.Gmi thv・andfilldj*BafTiiitfulandimcraHSHinIiiualxirajxdlfillttiewaterinthes电白耳mAndletthebirdsiu<xeas«onthesaxtlx.“AjlkItherewaseveiujris.、匕hi!Uun'廿一'm■ueu£wIMXifIhdiiy.AadCuduhIlL"LutthuIhiuJoruduavliviim.siFHturouticcurdlnH.tuItheirkinds;liveat^kPcreaturesthat■orealwigthegraundPandvildMiaals.eachaccoLrdineinits■kI.ndLirAinditwasso.Go<dUderhe『11.Hanial/saccordingtoUheirkln.d^Bthe1.i.vrest<Mrkaeeordin^toHLhci.fkinds,and■a.lllllbeedrcialilrejCtbaIutvetilliiiji^Lhi*gfuLiiiiJae-curdi.ii.gltitheif*kiruld-.AridCiid.n-avlti4LBit ^何加・Thnntiadtriirla*l.«4uswikuiwir.innurimha.inoinrlik-na苫口Bandlotth口鼻ruineverthnfisliofHi日seaandttiBbirdsofth日3irBovarthe1ir^!Stac:fcPn™rillthiseat匚tH,andoverall&h旧Jcr^Vixrefftbitm▼ga!ongths虹口由4・*SoGodl"由*tetdwiriinibisenmims@»ititheimbbof(>odhe£J文本输入£JC:\WIN口5VS国stem3之\二md.exenthebeglni'iingGedcreatedt?ieheavenswridttieaarth.Hjwth.&earthwasiorizilumsandpnipty,riarkrez?msandpnipty,riarkrez?was1shoverin?over二匕日waters.And&odsala,“LexTheretelight,JaodTherewas1light.Gdc»aw-hatthelight评gcod,andh«£»pa?atadthelighlfromthsdarkritherewresgBGodcalledtheLight"day,"andthedarknesshecalled"night-AndtherewQvm.ing..andthermwismorning-thofirstday.AndGodsaid,“Lotthsrcboan@Bfxpansebetweenthewiterstoseparatewarerironwater.'SaGedmaistheespanseandseparatedthewaterundertheeKpansefromthewateraboveit.Anditwasq□«Godcalledtheexpanse'sky."Andtherevra.sevening,andtherewasmcrning-th3secondd^y./kndGodsaid,L号tthewbergofertheskybegatheredt.ooneplacK?,andLetdrvsrouniappear+'Anditwsso.Godcalled力eerveround"Ihni”AndGodsawthdtitwasgood.ThenCodndthegatheredwatershecalled'seas.AndGodsawthdtitwasgood.ThenCod商said,'Let.thelandproducev=getation:=eed-b&arin®plantsandtrees匚nthe'•til!theiLbe-aifruitwithsbkcIinIt,<atcoircLiti£tutlietirvillouskinds."Anditwa*sd.The1andproducedtfegetaticn:plantsbearing目自由datearcingtoth&irleinde,andti'e&Ebearingfruitv/itliseeJinItaccordluslotliulrkinds.AridGodsavtwesnaming-thethirdday.Arudtheskytoseparatetbedayfideg鼻wesnaming-thethirdday.Arudtheskytoseparatetbedayfideg鼻fomanddaysandyears,angivelightcnthsearth.ZlAndIslthembelightsin'heexpanseoftheskytotwacdc.GodmadeliregroatLights-thegraator115httogovernthodayandthi?lesserlight二0governthenight.Healsomactethestars.Gocsetdneminthee廖情-半xpanseoftheskytogi^elighton.theearthjtogovernthedayandthenight,廖情-半门主忆让r 口工4自野门主忆让r 口工4自野CllJjlfl进行哈夫曼编码对文本进行编码■■■ ,1NDOWSVsysteri32\cmd,exe3,cni,J_10101000011001001100M0001100in0000011111100IIOIIIOOIIOOLIIOIIIOOIIIIIOOOOIOIOOOLlllOllOOOOOOLOllllllllOllLOllllOOOlllOOOOOllOOOlOClOllOOOlO'XlllOllOlOlOlOlllOO1L10100D101110011000001100010001100011101111111L100Q1DQILL10LOOD1110010000111110IIOIOOIOOIIOOOIOOOIIDQOIIIOIIIIIIIIWOOIOOOOIOIOOIIOIIIWIOOOIIIIOIIIIL^^MoiooiiiDOOOiirnioiioioooioiiiooiioooQOQiioioioaoioiiDiiiooioionoiiiooiiDOioooilOlllllllOlOllOOlOOlOllllOlOllOlOOOlOlOOUOllllOLOOOlllOlOlOlOlOlllltllOOllOOOlOOthLlOOllDlOlOlOllllllllllllOlimiOlOlLlJOl100111011111011001100010001100100001101F10101101111001100L0111001W000311000100011001010100011010L10111D111L11111D111100FOOlllOlllllOllOOlOlOOOllllOllO^OOOlOlOOllOUllOLOOOOlDOllLOlClOlOlOLllllllllOlll□OlllllDOOQlllOlOLOWlOlllllllQOllQOUlOODllOQlULOOllUlllWUClLllllllLlOlUllllOlOOOLUOOIDIIOOIIOOOOOIDIOOO111101lOOOOOLlOlOlOllllOlllOOC11LOOllOOlOlOlOtlOlOlOOlOpilllOODOllOOOLOOOlllllllOllOOlQlOOQOOllOOlllXOllOllllllOOOlOOllOOUlOOlllOlOlOlOOlOlllOOllOOOOOUOOCUCiOOlLlllllOllOOlOlOOllOlLllOlODOllLOOOllDnilllOOOlOOllOqILllOlDDaiDlOOOllllOllOOOOOllOliOlOlllOlODlOOllOOOlOOlDllllOOOOllOOOlOOOllDOllLOdPIWIIHIIOOOIOOIIQODQIOIQOIIOIIIIOIOOOIIIIOOIIIOIIIIDIIOOOIIIODIIOOIOIIIOOIIOOO10001000110011010011010110110111111110111100011100000110001000110011WOO11D111111pOOlOOllOUQCIllLlOllllllllllDlOlOlOQOOllODOlOOCillOOlUUDlOlllllllOlOllOOLOOlOlinulOllOlOllllOlOOOlOlOOOllllOllOXiOOOlOLlllOlllllOOOlllOOOOLllOOOOOllOOOlOOOllOOllEioooiioiiiiiioooiooiiQOOoioioioiioociiQiiioiQiioiiiooinoioioKoioiiiooiiof)ooo]ioOQlOOOllOOlQOOlOlllllllOlCilLOCilOOlOllLlOKllOlOOOOlCODllOQOlOllllOlLllLOODllK'OQOLllDOODOlOlOlOllOOll101111110^01001100111101010101010011LOOinilOOllOOOOOllOOOlOpOlllllllOllOOlOlOOllOllllOlOO^llOlOlOinilOOlLlOlllDOllIllOOlllOOllOOlOlllOOll/OOOOCJllDOOlOOOlllllllOllOOlDlOJllOllllOlDOOOlOlOOlllOllllLllOOlllOlLlOOllLllOOll1微轼骈音半:输出解码结果

LOH:Lilcreatedheavensearth.ear^hiornleunderWd5thirrithATFthemexpansedthereewaterwasIdiikitheirkindgsaid,dthatonepI“Lnd,ThenGther^wasttiorriLngenpty,darknesswisover:seedaccaTCins;iotheirkindswssnuTrnine-thsise^enitLgnanspansebetween

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论