数据结构实验哈夫曼树编码
更新时间:2024-02-29 00:23:01 阅读量: 综合文库 文档下载
实验四 哈夫曼树编码
一、实验目的
1、掌握哈夫曼树的一般算法;
2、掌握用哈夫曼树对字符串进行编码;
3、掌握通过哈夫曼树对字符编码进行译码得过程。 二、实验基本要求 1、设计数据结构; 2、设计编码算法;
3、分析时间复杂度和空间复杂度 三、程序实现
此程序中包含六个函数:Select()、HuffmanTree()、BianMa()、BianMa2()、YiMa()、 Sum(),其功能及实现过程如下: #include
struct element//哈夫曼树结点类型 { int weight; int lchild,rchild,parent; };
struct Char//字符编码表信息 { char node; int weight; char code[20]; };
void Select(element hT[],int &i1,int &i2,int k)//在hT[]中查找最小值及次小值 { int min1=9999,min2=9999; i1=i2=0; for(int i=0;i void HuffmanTree(element huffTree[],Char zifuma[],int n) //构建哈夫曼树 { int i,k,i1,i2; for(i=0;i<2*n-1;i++) //初始化 { huffTree[i].parent=-1; huffTree[i].lchild=-1; huffTree[i].rchild=-1; } for(i=0;i void BianMa(element huffTree[],Char zifuma[],int n)//根据哈夫曼树编码 { int i,m,k,j,l; char temp[20]; if(n==1){ zifuma[0].code[0]='0';zifuma[0].code[1]=0;} else { for(i=0;i } } } void BianMa2(Char zifuma[],char zifu[],char bianma[],int n)//根据编码表对字符串编码 { int i,j,k,m; i=k=0; while(zifu[i]) { for(j=0;j void YiMa(element huffTree[],Char zifuma[],char bianma[],char yima[],int n)//根据编号的码元译成字符串 { int i,j,k; i=j=0; if(n==1) while(bianma[i++]) yima[j++]=zifuma[0].node; else{ while(bianma[i]) { k=2*(n-1); while(!(huffTree[k].lchild==-1&&huffTree[k].rchild==-1)) if(bianma[i++]=='0') k=huffTree[k].lchild; else k=huffTree[k].rchild; yima[j++]=zifuma[k].node; } } yima[j]=0; } void Sum(char zifu[],Char bianma[],int &n)//计算字符串中字符种类的个数及其出现次数 { int i,j; i=j=0; while(zifu[i]) { for(int k=0;k void main() { int n,i; char a[50],b[200],c[50]; element huffTree[100]; Char w[50]; cout<<\请输入需要编码的字符串:\\n\ cin.getline(a,49); Sum(a,w,n); cout<<\该字符串中共有\类字符。其表示及出现频率分别为:\\n\ cout<<\字符\\t频率\\n\ for(i=0;i { cout< 四、运行结果 假设输入的一串字符串为:abcbcaddabbacda 则编译后它的编码为:111000100011010111101011000111 根据它的编码译码结果为:abcbcaddabbacda 五、实验心得体会 通过本次实验过程,熟悉了对哈夫曼树的使用方法,体会到哈弗曼树构造的编码是一种能够使字符串的编码总长度最短的不等长编码。掌握了哈夫曼树的一般算法;了解到用哈夫曼树对字符串进行编码;掌握通过哈夫曼树对字符编码进行译码得过程。
正在阅读:
数据结构实验哈夫曼树编码02-29
教育局精神文明建设工作汇报08-25
《乙型肝炎病毒、丙型肝炎病毒、人类免疫缺陷病毒(1+2型)核酸检测试剂盒(PCR-荧光法)操作规程》01-10
公司架构、部门职责、定岗定编05-20
初二升初三语文暑假衔接模拟题内含答案01-13
大四学期小结5篇02-09
小学语文西师版三年级上册总复习词语积累112-26
冶金设备课后习题答案+复习要点04-27
关于欧阳修的故事介绍11-20
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 哈夫曼
- 数据结构
- 编码
- 实验
- 游客投诉处理制度
- 中国期刊杂志市场专项调研及未来五年发展态势预测报告
- 2019六年级下册数学试题小升初数学模拟卷 - 冀教版(含答案)精
- 《三年级单脚起跳 - 双脚落地》 - 教案、反思
- 普通话轻声练习测试
- weblogic安装和配置
- 1939年苏联出兵波兰与英国的反应
- 小学学校章程
- 高职院校英语专业教学有效性初探
- 细胞色素p450的研究进展
- 5S推进组织的职责
- 机械专业中文翻译运用精密切割技术的新方法制备压电薄膜微驱动器
- 增城景点 - 图文
- 技术交地记录004石材安装及打胶技术交底 - 图文
- C002混凝土泵送剂、减水剂(抗压强度比、减水率、1h经时变化量)
- 江苏省融资性担保机构行政许可工作指引(试行)
- 房屋建筑工程施工技术及现场施工管理
- 营口经济概况 - 图文
- 家庭用室内温度湿度自动监控系统设计
- 改进低年级小学数学学习方式的探究