



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-.z.**中医药大学医学信息工程学院实验报告课程名称:数据构造与算法专业班级:计算机科学与技术()级学生**:学生**:实验名称:实验成绩:课程类别:必修限选□公选□其它□哈夫曼编码及应用实验目的:了解哈夫曼树的应用,掌握哈夫曼树的构造方法及前缀码的应用。实验性质:设计性,应用性。实验步骤:输入一串字符,统计其中所有的不同字符及其个数,得出每个不同字符在文中出现的频率。根据每个字符频率建立哈夫曼树,输出字符对应的编码。[实验要求]实验要求独立完成。迟交或不交的或源代码雷同者一律不做作业登记评分。[作业提交](实验报告写在此处)给出含有6,8,11个字符的实例,统计他们的频率,画出哈夫曼树,并用算法验证结果。662424D1C11B2A21)1D1C11B2A21)1代码写在此处#include"stdio.h"#include<malloc.h>#defineMA*NODE20#defineMA*LEAF30#defineMA*INT234567structHtNode{ intww; intparent,lchild,rchild;};structHtTree{ introot; structHtNodeht[MA*NODE];};typedefstructHtTreePHtTree;PHtTree*huffman(intm,int*w);voidmain(){chars[MA*NODE];intm=0;charw[MA*NODE];intcount=0;intt=0;inta[MA*NODE];int*b;char*code; code=(char*)malloc(sizeof(char));b=(int*)malloc(sizeof(int));printf("请输入字符窜:\n");for(inti=0;i<MA*NODE;i++){ scanf("%c",&s[i]);++count; if(s[i]=='#') break;}for(i=0;i<count-1;i++){a[i]=0;b[m]=0; for(intj=0;j<count-1;j++) { if(s[i]==s[j]&&i<=j){ a[i]=a[i]+1; } if(s[i]==s[j]&&i>j){ a[i]=a[i]+1; s[i]=NULL; } } if(s[i]!=NULL){ b[m]=a[i]; w[m]=s[i]; m++; printf("%c的个数%d,频率为%f\n",w[m-1],b[m-1],(float)a[i]/(count-1)); }}PHtTree*pht;pht=(PHtTree*)malloc(sizeof(PHtTree));pht=huffman(m,b);for(i=0;i<2*m-1;i++){printf("%d",pht->ht[i].ww);}printf("\n");for(i=0;i<m;i++){intc;c=i;t=0;int p=pht->ht[i].parent; while(p!=-1) { if(pht->ht[p].lchild==c) {code[t]='0'; t++; } if(pht->ht[p].rchild==c) { code[t]='1'; t++; } pht->root--;c=p; p=pht->ht[p].parent; } printf("%c的编码是",w[i]); for(inty=t-1;y>=0;y--) printf("%c",code[y]); printf("\n");}}PHtTree*huffman(intm,int*w)//构造具有m各节点的哈弗曼树{PHtTree*pht;inti,j,*1,*2,m1,m2;pht=(PHtTree*)malloc(sizeof(PHtTree));if(pht==NULL){printf("outofspace!\n");returnpht;}for(i=0;i<2*m-1;i++){pht->ht[i].lchild=-1;pht->ht[i].rchild=-1;pht->ht[i].parent=-1; if(i<m) pht->ht[i].ww=w[i]; else pht->ht[i].ww=-1;}for(i=0;i<m-1;i++){ m1=MA*INT; m2=MA*INT; *1=-1; *2=-1; for(j=0;j<m+i;j++) if(pht->ht[j].ww<m1&&pht->ht[j].parent==-1) { m2=m1; *2=*1; m1=pht->ht[j].ww; *1=j; } elseif(pht->ht[j].ww<m2&&pht->ht[j].parent==-1) { m2=pht->ht[j].ww; *2=j; } pht->ht[*1].parent=m+i; pht->ht[*2].parent=m+i; pht->ht[m+i]
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年媒体经营合作协议书
- 2025年度物流车辆维修配件供应合同
- 2025年度新型建筑材料应用示范工程售后服务保障书
- 2025年激光影像输出胶片项目合作计划书
- 2025年度国际物流公司项目总监聘用合同模板3篇
- 优化幼儿园教研学期工作计划的管理与执行
- 客户化需求对仓库的影响计划
- 建立规范的接待标准与流程计划
- 社区养老服务体系的完善计划
- 班主任我们永远的信仰计划
- 2025年江苏省高职单招《职测》高频必练考试题库400题(含答案)
- 工厂安全事故预防知识
- 2024年中考语文试题分类汇编:散文、小说阅读(第03期)含答案及解析
- 《宫颈癌筛查》课件
- 2024年江西应用工程职业学院高职单招职业适应性测试历年参考题库含答案解析
- 2024年中储粮油脂有限公司招聘笔试真题
- 消化科护理疑难病例讨论
- 中医护理技术操作质量控制
- 杭氧股份深度报告:工业气体龙头期待2025景气复苏
- 2024年学校意识形态工作总结
- (正式版)JBT 14449-2024 起重机械焊接工艺评定
评论
0/150
提交评论