版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
哈夫曼编码解码实验实验要求掌握二叉树的相关概念掌握构造哈夫曼树,进行哈夫曼编码。对编码内容通过哈夫曼树进行解码。实验内容通过二叉树构造哈夫曼树,并用哈夫曼树对读取的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,j,k,left,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)//若是根结点//令min1和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();文本文件通teod:-W亨基文件(F)础1曰心。)驻W吞助IH)Intiteb&EimiingGodcrBaitedlth&heavensaniithsearthBNwthsearth,was±GzmlesE购廿emptyEdarkaeES宙3i冬overthesiurfaceofthedee>randtheSpiritofGodwsshoverincoverthem.ters_AndGmdissid,"LejItherebe- -nndther-is1ifhi.Sadsawth-ntth^1i^.ht审迁!sg.Dmdpandh:2eparai.tEdtheLightfrumth藤darkness.Godcalledthetight"<d我C:\W/IND(JWb\syitemJW\cmd.exe审M义本..31n7hsb^sinninsGodcreatedtheheavenss.ndtheearth.Mewthemw.r士yasformlegBEan!el®:ty,darknesswieoverthesurficeoftaedeep,sndtheEpiri-□!Gcdw典ifhnvprirgnvprthsws+.ats.AnriCinrissii,"Tfitt.Pp^pbplight,"sndt.hRrp«由只1寥睛li"GulS<iW1111L;1jkli^li'.WgMC:\W/IND(JWb\syitemJW\cmd.exe审M义本..31n7hsb^sinninsGodcreatedtheheavenss.ndtheearth.Mewthemw.r士yasformlegBEan!el®:ty,darknesswieoverthesurficeoftaedeep,sndtheEpiri-□!Gcdw典ifhnvprirgnvprthsws+.ats.AnriCinrissii,"Tfitt.Pp^pbplight,"sndt.hRrp«由只1寥睛li"GulS<iW1111L;1jkli^li'.WgM^uud,ciJiL:lieSe>>s.±<ileil11.e11gliLT:uLLl匚止ildlkli.eEE.jodcalledthelisht"d&v\"andthedarknesshecalled"ni.有L"Andtherewhg^zcv^nint,andtherevo.3mornin^-tlicfirstday.Ar.dCod3cid,'Lnl~¥ictckcancgxpanssbetweentaevaterstosepira^evateriromva-er."EoGodmadetheexpanseandsepara^edthe'.?aterundertheexpand&frontt.e阻twral>o^ei.i.Andit即由msgj.Gulcilledliiziexpaubz:"sky."AndLhtutwasu-ztulug,di.ilItieiiwayi.iuLi.ljig-,11RRr-inriray.AniGnrisain,"LrT.thpwrT.ttunriRrthRsky?rg3-.h=TRdt.nirpr:1acHe,andletdryg^cuiidippeaz;.Andit宣amso.Codcalledihedi'yfroui^d1and,'thegatheredwa~ershEcalled"seas.'And(.-odsawtha1itwamsood.IhenGod"caid,Letthelandpr□iuccBogota-ion:cccd-bcaringplar.tcandircccont]icla•he.-hatoeariruitwithBEedinit,accorcingtotheirvariouskLr.ds."Ancitwasn_Thn1andp^rrlnrpri-/pgp+a-fiir.:r<1writsliparin?pppH^rr-nrrl-十n十h口Itkind?,anilIrtzitbetiri:史-iuiI\dluiIt.t_:'JULLll:i^:ulliiii'klnil:;.AijlIGjCaawIit.wasgnnrl.Andt.hp-pw由门r-jpfijngnarHthpr^iCod55.11,JLettherebelightsir.~hee-ci:anseof匚hmnigh二£niletthen,serveassisnstob&tkctthon.be1ijhtcinthecxf'anccoftheckyto■1口rsnr1igh+inpnvprntk.pnisht.H口w1.=「maii口十上口白十et=_Rrd-h口nir.~Y.p口Hxi.dlih=!ufHieikyLugiVZ:1igliIJl--heei±'Lli,lugu'-1elli11.eday:U-l1Llie111g]il,dt/哉牌括盲—:elish~frondarkneBE.AndGcds"tha~it爽mgood.And<hmr日was*曰终 进行哈夫曼编码Ivaterfxqbjwatex.*So^odiaad.@th® aodaet>arAtgdthe^atermdlartli@qj[口■工lsswfromthsiraterabeLt.And.lxwamGodcalledtlheenpa^ise^sKy.AnsKthere宙角探evening,atrndlthere宙角女mDrning-l[ih.eug!匚瞬:rbd.day.AndCadEa.idpLctth®watETumdarthsiskyL帼gai土housedtoanEp1aca,andlet.drygFEJLmdappear,Andit-vaEsoB6odcalledIhBdrygruund^land,andtlh^gathsredwaters:ihuc-allsd*soas,AndGodBawthiL^itwasgooduUten^odsaidlELetthelamdproducevegetation:see^.-bEaiTiELEplantsantitreesontta1anJthatbearfruitw?ithseedinaccordiost®their富ari口hekiiadBa"Anditwas度ti.Ulb1anJproducedvegetation!plantsbeasring.js^gidaccardifatheirkind!%trtesbe-Bringfruitwithse-edinit用exordin眼tnthsirkinds.AndGnd耳hmthatitwas瞬ood.葫dthsroW4Ssv募nirLK〉andthsrew«srnnmins-thethirdday.AndGodBaidP"LettherebelightsintheeipATiBeoftheskytoseparatethednyfcomth.eiai^htaandLettBj&iri.serv^asssienstoid心kseasoniaaoddays如上血yeuar和丑目let尊Re皿belightsinth&expanseoftheskytogivelightcinthsearttL.-Anditmssq.Codmdetwogreat1ights-tlheg.risat«rlighttogcs^iarnthsid.a.yaindthsIsss-sarlighttogovernths-i^£g.ht.JJ®alson.adQthds:tziirr.GodSBttJieinintlh^espansBofUiesikytosivBlightonths®artliatogovarnUiedayandtlhBnisht,andtoEe^jixatelightfromdarknesB:..AmiGod耳物钮thatitvasgiiodLAniltherewas anHthBr@wasm£imirL®-t!h®ictirlhdaysAjgi疝Gode又icU^Letthei^atarte^s-u^ithlivingGreatureEi^ndletbirdsflyabovetheesirttiacrosstheeMpaumseofthesky.SoGudcreat&dThegxeatcreattiresofTheseaandevery^ndmciTingthinswithwhichthew-itertBe«PAacarrlinEgtotheirkinds,AndovsryvinKBribird^ccD^dingtoitslind.AndGodsawthatitwsgood.Godblessedthenandsaid,i¥Befruitfulandincr❶用inoimh-e'r狗浦fillthewaterimtheseAB3amdletthebixdtaincreaisedotheS'arthuMMidtherawaaevetningiandtherew^suia^nifie-thefifthdiy.^LtidGodsaid3"Letthe1snd^rutidLiiceliviOfEcreaturesaceardiiriEt<Dth.oi.r^irbdc:13口口虹史口仁k::.cre-nturQ£that,innwualangth.>ngraumd:,»nd■ari1dinima1srsi-acliaccordingtoiisle1nd.*AnditmsEDrGodin^dethevildAniM^lsAC&nrdirLg:totheirkinds,the1iTeEtucIkaGcmrdingt-otheirkiztdsgandalltheciBatxmriBSthalhove theEroimdaccordiagIdtheirkind日.AndGodBawthatitwats盈ociitThenGod^aid3"Letubuakswanin⑩yimsEe3inciiirlikeneBS,sxtilletthemroleoverttafishottheseathebirdsoltheairpoverthellwestoelc.,overalltheeartm:,atrndlo^eralltlueGro^turesthatmove4IonsthegrouniirSoGodGrofit^dmaninhiedwthJlimi睨弟intheim^E^ofGodhewaRnnrring--.h=it.hirriisy.Anritlieskytoseparate-hsdayzrseason^anddaysandvm&rs,angivelifhTontt.cearth.AndLitwa=so.Godmacet^o^reatli^hts-thegreaterlighttogovernthedayandthe咫手KLKL.1=1丘孝旧参waRnnrring--.h=it.hirriisy.Anritlieskytoseparate-hsdayzrseason^anddaysandvm&rs,angivelifhTontt.cearth.AndLitwa=so.Godmacet^o^reatli^hts-thegreaterlighttogovernthedayandthe咫手KLKL.1=1丘孝旧参UILWt?] 7J/J4毛此; 成性叩技欢&拜M..卫启八曲咨 5VI"■-ZC:\WIND0WS\system32\cmd.exeJreenplant:oriocd."/nii~评ameo.3odsa^allthathehadmads,anditwaEg^nirl.And十hnrugupyrn: 彳r.H十hnrnwurrnrrin^-ih=v+hTn.y.亲符数量=4。P[B\-.:;ABGHILNRSTabcdsfghiklimoprstuvwxy。输出咕夫曼编门:P[・:no1013101111JU1LI.;llll(ll)1010100000,VI,VIUljulJlR:mnivnnn1013001ttH邮1燎.sKT101310X01niloi^iononirnoncoon101010001001U1J-U0011|i;1011,十日嫁"’河王KLKL--n度/m系TUI*5,十日嫁"’河王KLKL--n度/m系TUI*5「Hli对文本进行编码■Hl L:■:•澹nu:ITi7STI101010000110010011000100D1100101000001111110011011100110011101110011111000010100D1111011D000001011111111D111011110001110D0001100010001100010001110110101010111001110100010111001100000110001000110001110111111111000100111101000111001000011111011010010D1100010D01100011101111111110001D000101001101111010001111011111011111101DlOOlllODOOLlllOlOlLOlOODlOlllOOllOOOOOOllOlOlOOOlOUOlllOOlOlOllOlllOOllOOlOOOlIniiiiiinoiiooixioiiiinoiioioKioiooiiciiiioiDcoiiioiDioioioiiiiiiiooiioociooEDllOOllOlOlOlOlllllLllllllOlllOllOlOlllOllOOlllOlllllCllOOlLOOQlOOCLlOOlOOOOllOlrici0110111100110?10111(i0110i)0001ic0i)1000110i)1010ironil(il31inili0111111ilirillinorDOlllOlllllOllOOlOlOOOllllOllOOODOlOlOOllOllllOlOOOOlOOlllOLOlOlOlOlllllllllOlllD0111110D0011101D10101011111110011000100D110010100110111100011111111101011110100DlllOOlOllOOllOODOOLOlOODllllOllDOOOOllOlOlOllllOlllOOOlllOOllOOlOlOlOHOlOlOOlOD11L1000D1100010D01L11111011001010000011D01110001101111110001001100L110011101010lOOlOlllDOllOOOODllOOOlODOlllllllOllOOlOlOOllOllllOlOOOlllOOOllOllllllOOOlOOllOO111L0100D101000111101100D001101010111010010011000100101111000011000100011001110001101111110001001100001010011011110100011110011101111011000111001100101110011000DOOLOOOllOOLlOlODllOlOllDllOllllllllOllllOOOlllOOOOOllOOOlOOOllOOllLOOOllOllllllD001001100001111011111111110101010000110D010001100100010111111101011001001011110101L0101111010001010001111011000D001011110111110001L10000111000001100010001100111:10001101111110001001100001010101100010111010110111001110101010010111001100000110D0100011D0100010111L111010110010D10111101011010000100011000L0111101L111000111000D1110000D1010101100111011111100010011001111010101010100111001011001100000110001000111111101100101001101111010000110101010111001110111001111100111001100101110011D0000110D010001111111011D010100110111101D000101001110111111100111011100111110011璘牌括音兰:■ .r/ i输出解码结果
1G374函JOWS\system32\cmd.exe|7:lUlj_lJumrimi1G374函JOWS\system32\cmd.exe|7:lUlj_lJumrimiginthebE-siiinin?Gridcreatedtheheavenswncltheearth.Nawtheesrthwasformleandcn^;ty,darkncccwicoverthecurficcofthedeep,sndtheSpiri~GcdwLhoverirgo?ertheliters.f\ndGods^i1,"Lettherebelight,"sndtherewas1'ligh-..Gni由训th"-.bp1igh~.密亦gnnrl,a-nnIir^R^srat.Riit.?R1ight.f^nm+.-iprisrknfess,jodcalledthelightday,andthedarknesshectlledlilghi.'i\ndtherewieevening,andtherevasmornin^-thefirstda3p.Ar.dGodszid,“LmtThereteanexpans^betweenthewater^tosepiira^ev?at&rfrom^'a-er.SoGodms.detheex]?arisedud=epna-ulILitwalerLiiiltirl:itexpt.iis
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工现场心理压力管理培训方案
- 建筑智能化系统集成方案
- 2024-2025学年度法律硕士测试卷附完整答案详解(名师系列)
- 2024-2025学年度计算机四级常考点试卷附答案详解(黄金题型)
- 2024-2025学年度医学检验(师)题库试题附参考答案详解(研优卷)
- 2025山东聊城市属国有控股公司电商平台项目招聘100人笔试历年备考题库附带答案详解
- 2025山东威海乳山鑫蜜客人力资源有限公司招聘劳务派遣人员技能测试笔试笔试历年备考题库附带答案详解
- 2025安徽蚌埠市固镇县工业投资(集团)有限公司招聘专业安全监管人员笔试历年难易错考点试卷带答案解析
- 2025安徽宿州市融资担保集团有限公司招聘拟聘用人员笔试历年典型考点题库附带答案详解
- 2024-2025学年度电梯考试考前冲刺练习附完整答案详解(有一套)
- 【《汽车排气系统三维建模及有限元仿真分析》17000字(论文)】
- 学校管理特色工作汇报
- 急危重症快速识别与急救护理
- 2026年新高考数学专题复习 103.马尔科夫链讲义
- 初中数学备课教案模板
- 浙江建设监理管理办法
- 2026届天津市部分区(蓟州区)中考英语考试模拟冲刺卷含答案
- 运输公司废物管理办法
- 水库安全度汛培训课件
- 2025年上海高二学业水平合格性考试信息技术试卷(含答案详解)
- 数字媒体艺术设计毕业设计
评论
0/150
提交评论