哈夫曼算法——数据结构课程设计

假设某文本文档只包含26个英文字母,应用哈夫曼算法对该文档进行压缩和解压缩操作,使得该文档占用较少的存储空间

c++
1

5个回答

0

这里是树和二叉树的实验

0

私聊我我,我给你代码,还可以显示哈夫曼杈~

0

define X 401 # define Y 15/*哈夫曼树的长度*/

typedef struct ptree//定义哈夫曼结点类型
{struct ptree lchild;//左指针
struct ptree *rchild;/
右指针*/
int w;/*w存储节点权值*/
char zha[2];//储存当前节点的字母或数字 字符 如果不是叶子 则为'<'

}Ptree,*Optree;
int shu=0;
char ma[X][Y],b[Y]; //X为编码的个数有多少种字母就是X Y为编码长度
int bianma(Optree p,int a) //初始化a=sum=0;对哈夫曼进行编码的函数
{ int static c=0; //设置静态变量c
if(p) { if(p->lchild) //是左侧
{b[a]='0'; //左零
bianma(p->lchild,a+1); //继续遍历
}
if(p->rchild)
{
b[a]='1'; //右一
bianma(p->rchild,a+1); //继续遍历
}
if(p->zha[0]!='<') //如果是树叶则一个字符编码结束
{
b[a]='\0';
strcat(ma[shu++],b);
printf("%-13s\"%c\"\n",b,p->zha[0]); //输出编码和字符
c+=a*p->w; //计算权值
}
}
return c; //返回静态变量即总权值
}

0
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
数据结构课程设计之哈夫曼编码模块
心血来潮只为完成一个完美的课程设计,下面算是单独的一个模块实现吧!但是为了拆分,我还是费了一些小心思的~因为开始调试好的代码,虽说没有华丽丽的页面,但基本的功能我还是都实现了的,包括哈夫曼编码、译码和从文件中读取还有向文件中写入,不求尽善尽美,但求问心无愧吧!但是在遇到拆分问题时,还是有时候需要好好考虑一下,比如全部变量的使用,最好不要 未拆分之前,代码实现如下: #include
哈夫曼编译码器——数据结构课程设计
2.哈夫曼编/译码器【问题描述】用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼码的编/译码系统。【基本要求】一个完整的系统应具有以下功能:(1)I:初始化(Initia...
数据结构课程设计-哈夫曼编码译码
//******************************************** //程序功能:哈夫曼编码及译码 // //日期:2014年11月18 // //******************************************** #include #include #include #include #define MAX 128 //
JAVA数据结构与算法实现-哈夫曼树
JAVA数据结构与算法实现-哈夫曼树 哈夫曼树,是一种特殊的二叉树,由一个叫做哈夫曼的人实现出来的,由于他的一致性所以数据统一。在这里我使用数组实现二叉树的原理。 在这里我们首先创建一个二叉树节点的类,名为point: /** * Created by jim_D on 2018/10/11. */ public class point { int info;//定义节点的值 point lef...
哈夫曼编码译码(数据结构课程设计)
1.需求分析 1.1问题描述 设计一个利用哈夫曼算法的编码和译码系统,重复地显示并处理以下项目,直到选择退出为止。 1.2 基本要求 将权值数据存放在数据文件(文件名为data.txt,位于执行程序的当前目录中)  分别采用动态和静态存储结构 初始化:键盘输入字符集大小n、n个字符和n个权值,建立哈夫曼树; 编码:利用建好的哈夫曼树生成哈夫曼编码; 输出编码; 设字符集及频度如下
《数据结构课程设计》题目3 哈夫曼算法的应用
问题描述 在一个加密应用中,要处理的信息来自下面的字符集,各个字符的相关使用频度如下:   字符 A B C D E F G H I J K L M 频度 180 64 13 23
数据结构与算法/哈夫曼编码译码器
(1)输入一个需要压缩的文本文件名,统计该文件中各字符的个数作为权值,生成赫夫树。(2)将文本文件利用赫夫曼树为每个字符进行编码,生成编码文件(文件扩展名为.cod)。(3)输入一个待解压缩的压缩文件名,并利用相应的赫夫曼树将编码序列译码(解码)。(4)显示指定的编码文件和文本文件。(5)把赫夫曼编码用二进制位紧缩到一个变量中,利用位运算进行真正的数据压缩,并求压缩比。#include#inclu
课程设计哈夫曼编码系统
#include&amp;lt;iostream&amp;gt;#include&amp;lt;stdio.h&amp;gt;#include&amp;lt;string&amp;gt;#include&amp;lt;string.h&amp;gt;#include&amp;lt;cstring&amp;gt;#include&amp;lt;stack&amp;gt;#include&amp;lt;queue&amp;gt;#include&amp;lt;algorithm&amp;gt;#include&
哈夫曼编码译码器 数据结构与算法 课程设计
设计一个利用哈夫曼算法的编码和译码系统,重复地显示并处理“要求”中项目,直到选择退出为止。 要求: (1)将权值数据存放在数据文件(文件名为data.txt,位于执行程序的当前目录中) (2)分别采用动态和静态存储结构 (3)从键盘输入字符集大小n、n个字符和n个权值,建立哈夫曼树; (4)利用建好的哈夫曼树生成哈夫曼编码; (5)输出编码; 用户可以执行的的功能有: (1)---选择读取某个源文件由系统解析建立哈夫曼树 (2)---手动输入字符集及其权值信息建立哈夫曼树 (3)---打印字符集的哈夫曼编码到屏幕 (4)---选择某个文本文件进行编码 (5)---选择某个代码文件进行译码
数据结构与算法实验报告--哈夫曼编码
实验 实验三 Huffman编码的实现 学院   专业(班级)   姓名   学号   教师   实验二 Huffman编码的实现   1实验目...
SWUST数据结构--哈夫曼译码
const int maxvalue=100; const int maxbit=100; const int maxn=100; #include &quot;iostream&quot; #include &quot;stdio.h&quot; #include &quot;stdlib.h&quot; using namespace std; struct haffnode { char ch; int weight; int flag; ...
数据结构课程设计———迷宫和哈夫曼编/译码器
数据结构课程设计———迷宫和哈夫曼编/译码器 一 .目录 数据结构课程设计———迷宫和哈夫曼编/译码器 一 .目录 二 . 迷宫 1. 问题描述 2. 题目要求 3. 思路 4. 运行结果 三. 哈夫曼编/译码器 1. 问题描述 2. 题目要求 3. 思路 4. 运行结果 三.源码地址 二 . 迷宫 1. 问题描述 迷宫是实验心理学中一个古典问题。用计算...
数据结构课程设计作业 哈夫曼编码/译码器
#include&amp;lt;iostream&amp;gt; #include&amp;lt;algorithm&amp;gt; #include&amp;lt;cstdio&amp;gt; #include&amp;lt;cstring&amp;gt; #include&amp;lt;cstdlib&amp;gt; using namespace std; typedef struct { char letter, *code; int weigh...
数据结构课程设计——哈夫曼编/译码器
有以下功能: 初始化 从终端读入字符集大小n及n个字符和m个权值,建立哈夫曼树,并将它存于文件hfmtree中 编码 利用已建好的哈夫曼树(如不在内存,则从文件hfmtree中读入),对文件tobetrans中的正文进行编码,然后将结果存入文件codefile中 解码 利用已建好的哈夫曼树将文件codefile中的代码进行译码,结果存入文件textfile中 打印 将文件codefile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码文件写入文件codeprint中 打印哈夫曼树 将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件treeprint中 附带详细的设计报告(最后的课程设计等级被评定为优秀)
数据结构--我的哈夫曼编译系统
哈夫曼编译系统
数据结构课程设计报告java+哈夫曼树
java课程设计关于哈夫曼树编码译码,输入一串字符串,将其根据字符出现的频率建哈夫曼树并根据树进行译码。 此word的代码完全拷贝在eclipse可直接运行,此文档仅供参考,希望各位能做出自己的修改成适合自己的文档。
哈夫曼编码/译码器数据结构课程设计
设计一个哈夫曼编码/译码系统,对一个文本文件中的字符进行哈夫曼编码,生成编码文件(后缀名.cod);反过来,可将一个编码文件还原为一个文本文件(.txt)。 要求: (1)输入一个待编码的文本文件名,统计文本文件中各字符的个数作为权值,生成哈夫曼树; (2)将文本文件利用哈夫曼树进行编码,生成编码文件(后缀名cod); (3)输入一个待解码的编码文件名称,并利用相应的哈夫曼树将编码文件译码; (4)显示指定的编码文件和文本文件; (5)把哈夫曼编码用二进制位紧缩到一个变量中,利用位运算进行真正的数据压缩,并求压缩比。(此选项选作)
数据结构——哈夫曼编/译码器
哈夫曼编/译码器 任务:建立最优二叉树函数。 要求:可以建立函数输入二叉树,并输出其哈夫曼树。 在上交资料中请写明:存储结构、基本算法(可以使用程序流程图)、输入输出、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法; 利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据...
数据结构课程设计----哈夫曼编译码器设计
数据结构课程设计----哈夫曼编译码器设计 数据结构课程设计----哈夫曼编译码器设计 数据结构课程设计----哈夫曼编译码器设计
数据结构课程设计(哈夫曼编译码器 )
非常完美的数据结构课程设计(哈夫曼编译码器 )非常完美的数据结构课程设计(哈夫曼编译码器 )非常完美的数据结构课程设计(哈夫曼编译码器 )非常完美的数据结构课程设计(哈夫曼编译码器 )非常完美的数据结构课程设计(哈夫曼编译码器 )非常完美的数据结构课程设计(哈夫曼编译码器 )非常完美的数据结构课程设计(哈夫曼编译码器 )非常完美的数据结构课程设计(哈夫曼编译码器 )非常完美的数据结构课程设计(哈夫曼编译码器 )
数据结构——哈夫曼编码译码器
题目5: 哈夫曼编/译码器 [问题描述] 利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼码的编/译码系统。 [基本要求] 一个完整的系统应具有以下功能: 1、I:初...
数据结构课程设计-哈夫曼树及其应用
题目:假设用于通信的电文由字符集{a,b,c,d,e,f,g,h,}中的字母构成,这8个字母在电文中出现的 频率分别为: {0.19, 0.21, 0.02, 0.03, 0.06, 0.07, 0.1, 0.32}. 要求:画出哈夫曼树。 我从课本上面摘抄了一个题目,题目大概是上面这样的,我们这里只是详细的说明一下哈弗曼树要怎么构建。借用一下这个题目。 分
哈夫曼编译码器课程设计报告(完整版)
一个完整的系统应具有以下功能: (1)I:初始化(Initialization)。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中。 (2)E:编码(Encoding)。利用已建好的哈夫曼树(如不在内存,则从文件htmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中。 (3)D:译码(Decoding)。利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。 (4)P:印代码文件(Print)。将文件CodeFile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码写入文件CodePrint中。 (5)T:印哈夫曼树(Tree Printing)。将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中。
武汉理工大学数据结构算法与综合实验哈夫曼压缩
VS2010以上通过,实现压缩功能,很方便
Huffman 编码器与解码器-----数据结构课程设计(C++源码和报告)
字符文件统计字符出现频度,构造Huffman 树,编制Huffman编码,并将给定字符文件编码,生成编码文件;再将给定编码文件解码,生成字符文件
哈夫曼编码/译码的设计与实现
首先根据给定的n个字符的权值构造哈夫曼树。通过遍历此二叉树完成各字符的哈夫曼编码,另输入一组‘0’、‘1’代码构成的报文将其翻译成对应的字符信息。 废话不说直接上代码: #include #include #define UINT_iMAX 10000 using namespace std; typedef struct { char letter, *code; int weig
数据结构课程设计哈夫曼编
数据结构课程设计哈夫曼编 java数据结构哈夫曼函数
基于Huffman树的文件压缩C语言源码(数据结构课程设计)
基于Huffman树的文件压缩C语言源码,自己做的数据结构课程设计。可以安装到系统,实现了文件的右键压缩功能。
【数据结构】哈夫曼树的编码与译码
#include &amp;lt;stdio.h&amp;gt; #include &amp;lt;malloc.h&amp;gt; #include &amp;lt;string.h&amp;gt; typedef struct { char info; int weight; int parent, lchild, rchild; } HTNode, *HuffmanTree; typedef char* *HuffmanCod...
哈夫曼算法实现文件夹的压缩与解压
哈夫曼算法实现文件夹的压缩与解压 这是学校数据结构与算法设计课程的PJ,旨在实现类似zip软件的压缩与解压功能。我在几乎有空就在写代码的情况下两周完成了这个项目。 目前网上能够搜索到的资料对于单个文件和文本文件的压缩与解压较多,而对文件夹与大文件的压缩与解压较少。所以想在这里把自己的一些想法和思路写下来,供大家交流与参考。因为自己目前正在读大二,这也是自己写的第一篇CSDN博客,之前只学过C与C+...
哈夫曼压缩算法与解压
算法思路如下:压缩:这个实验一开始将文件中的字符串读取到一个vector中,然后通过处理vector中的字符,建立了n个节点,每个节点包括每个字符和出现的频率,然后建立2*n个哈夫曼节点,前n个哈夫曼节点和节点的内容相同,后面的n个节点是用于构建哈夫曼树的非叶节点,然后构建哈夫曼树,把这些节点连接起来,生成哈夫曼树,生成哈夫曼编码时,从叶节点开始时逐步向根节点延申,获得哈夫曼编码,将编码输出到co...
【数据结构与算法综合实验】二叉树与赫夫曼图片压缩实践
说明:这是武汉理工大学计算机学院数据结构与算法综合实验课程的第一次项目:二叉树与赫夫曼图片压缩实践代码。 源码下载地址:点击此处下载本次实验项目(运行环境:VS2017) 关注微信公众号【知行校园汇】可免费下载全部源码。 纸上得来终觉浅,绝知此事要躬行。 实验教材: 任务列表: 阶段 工作内容 交付物 ...
数据结构实验33——哈夫曼编译器【抄的】
Description写一个哈夫曼码的编/译码系统,要求能对要传输的报文进行编码和解码。构造哈夫曼树时,权值小的放左子树,权值大的放右子树,编码时右子树编码为1,左子树编码为0。Input输入表示字符集大小为n(n &amp;lt;= 100)的正整数,以及n个字符和n个权值(正整数,值越大表示该字符出现的概率越大);输入串长小于或等于100的目标报文。Output经过编码后的二进制码,占一行;以及对应解...
哈夫曼树的应用——课程设计
这个是我去年的课程设计报告,因为有学弟要我就整理了下,功能很简单,就一个加密解密还有求哈夫曼编码,但足够满足老师的要求,现在传给有需要的童鞋参考~ 完整的代码及报告 以下是实验报告内容                                    哈夫曼树的应用——对文件进行解码和译码 一、       需求分析说明 随着信息时代的到来,信息越来越多,如何
【课程设计】 哈夫曼树的应用:字符串的加密与解密
一.实验任务 在一个加密应用中,要处理的信息来自下面的字符集,各个字符的相关使用频度如下: 字符空格 A  B  C D   E F  G   H  I  J  K  L M 频度 180 64 13 23  32103 2215   47 57  1 5 31  20 字符 N O  P   Q R  S T   U  V  W X Y Z 频度 55 63  15 1 48  56
数据结构实验5-哈夫曼编码
实验内容 程序代码 运行结果 实验内容 某报文中共出现abdeoy 等6个字符,各字符出现频度依次为12 6 4 1 2 8。要求: 实现哈弗曼编码算法,对这6个字符求出各自的编码; 实现哈弗曼译码算法,对给定的一组编码(110011111101110110),译出其对应的报文部分 。 程序代码 #include &amp;lt;iostream&amp;gt; #includ...
利用哈夫曼树进行文本压缩及解压(步骤)
首先这里的文本是指可以转字符串的(其他文件的压缩类似) 本文不关注实现,实现在后续的文章会继续补充 细节优化会慢慢更新 哈弗曼树即最优二叉树 带权路径长度达到最小的二叉树 一个哈弗曼树中离根节点最近的叶子 权重最大字符串/文本统计“ 我说切克,你说闹,呦呦切克闹,我们一起切克闹.” , : 3 —>0x01 闹 : 3 –>0x02 说 : 2 –>0x
数据结构实验-哈夫曼编码C语言实现(实验报告内有代码和运行结果)
利用哈夫曼编码进行住处通讯可以大大提高信道利用率,缩短住处传输时间,降低成本,但是,这要求在发送端通过一个编码系统将传输的数据预先编码,在接收端通过一个译码系统对传来的数据进行译码(复原),对于双向传输信息的信道,每端都一个完整的编码译码系统,试为这样的住处收发站写一个哈夫曼友的编码译码系统.
C语言-数据结构-哈夫曼编码-Huffman-源代码
1. 目标 读取一段字符,生成哈夫曼编码,并输出。如下所示: 2. 代码结构 2.1 统计各个字符出现的次数,并排序; 2.2 根据生成的哈夫曼树,生成哈夫曼编码; 3. 源代码 #include #include #include #define title "------------------------------Lif
数据结构-2-哈夫曼树与哈夫曼编码 原理详解
哈夫曼树与哈夫曼编码   首先,介绍下什么是哈夫曼树。哈夫曼树又称最优二叉树, 是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点 的权值乘上其到根结点的 路径长度(若根结点为0层,叶结点到根结点的路径长度 为叶结点的层数)。树的带权路径长度记为WPL= (W1*L1+W2*L2+W3*L3+...+Wn*Ln) ,N个权值Wi(i=1,2,...n)构成一棵有N个叶结点
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 物联网算法课程设计 吉大数据结构课程设计