精华内容
下载资源
问答
  • 哈夫曼树与哈夫曼编码 建立哈夫曼树并计算哈夫曼编码
  • 哈夫曼编码

    2014-12-21 17:51:54
    哈夫曼编码:从键盘输入若干字符及每个字符出现的频率,将字符出现的频率作为结点的权值,建立哈夫曼树,然后对各个字符进行哈夫曼编码,最后打印输出字符及对应的哈夫曼编码
  • #include <stdlib.h>/*哈夫曼树建立哈夫曼编码算法的实现*/ #include typedef char* HuffmanCode;/*动态分配数组,存储哈夫曼编码*/ typedef struct { unsigned int weight ; /* 用来存放各个结点的权值*/...

     

    展开全文
  • 1、C语言 - 哈夫曼编码实验报告福建工程学院课程设计课程:数据结构题目:哈夫曼编码和译码专业:信息管理信息系统班级:1002 班座号:15 号姓名:林左权2011 年6 月27 日2实验题目:哈夫曼编码和译码一、要解决的...

    《C语言-哈夫曼编码实验报告》由会员分享,可在线阅读,更多相关《C语言-哈夫曼编码实验报告(12页珍藏版)》请在人人文库网上搜索。

    1、C语言 - 哈夫曼编码实验报告福建工程学院课程设计课程:数据结构题目:哈夫曼编码和译码专业:信息管理信息系统班级:1002 班座号:15 号姓名:林左权2011 年6 月27 日2实验题目:哈夫曼编码和译码一、要解决的问题利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码 (复原)。对于双工信道(即可以双向传输信息的信道) ,每端都需要一个完整的编/译码系统。二、算法基本思想描述:根据给定的字符和其中每个字符的频度 ,构造哈夫馒树,并输出字符集中每个字符的哈夫曼编码 .将给定的字。

    2、符串根据其哈夫曼编码进行编码 ,并进行相应的译码 .三、设计1. 数据结构的设计(1)哈夫曼树的表示设计哈夫曼树的结构体( htnode ),其中包含权重、左右孩子、父母和要编码的字符。用这个结构体( htnode )定义个哈夫曼数组( hfmt )。迷宫定义如下:typedef structint weight;int lchild;int rchild;int parent;char key;htnode;typedef htnode hfmtMAXLEN;( 2)对原始字符进行编码初始化哈夫曼树( inithfmt )。从终端读入字符集大小 n,以及 n 个字符和 n 个权值,建立哈夫曼。

    3、树。并显示出每个字符的编码。31.void inithfmt(hfmt t)/对结构体进行初始化2.void inputweight(hfmt t)/输入函数3.void selectmin(hfmtt,int i,int*p1,int*p2)/ 选中两个权值最小的函数4.void creathfmt(hfmt t)/创建哈夫曼树的函数5.void phfmnode(hfmt t)/ 对字符进行初始编码( 3)对用户输入的字符进行编码void encoding(hfmt t)/对用户输入的电文进行编码char r1000;/用来存储输入的字符串int i,j;printf(nn请输入需要编码的。

    4、字符:);gets(r);printf(编码结果为 :);for(j=0;rj!=0;j+)for(i=0;i#include #include #define MAXLEN 100typedef structint weight;int lchild;int rchild;int parent;char key;htnode;typedef htnode hfmtMAXLEN;int n;void inithfmt(hfmt t)/对结构体进行初始化int i;printf(n);printf(-n);printf(*输入区*n);printf(n请输入 n=);scanf(%d,&n);g。

    5、etchar();for(i=0;itj.weight)min1=tj.weight;*p1=j;for(j=0;jtj.weight & j!=(*p1)/注意 j!=(*p1)min2=tj.weight;*p2=j;6void creathfmt(hfmt t)/创建哈夫曼树的函数int i,p1,p2;inithfmt(t);inputweight(t);for(i=n;i2*n-1;i+)selectmin(t,i-1,&p1,&p2);tp1.parent=i;tp2.parent=i;ti.lchild=p1;ti.rchild=p2;ti.weight=tp1.weight+t。

    6、p2.weight;void printhfmt(hfmt t)/打印哈夫曼树int i;printf(-n);printf(*哈夫曼编数结构 :*n);printf(tt 权重 t 父母 t 左孩子 t 右孩子 t 字符 t); for(i=0;i2*n-1;i+)printf(n);printf(tt%dt%dt%dt%dt%c,ti.weight,ti.parent,ti.lchild,ti.rchild,ti.key);printf(n-n);printf(nn);void hfmtpath(hfmt t,int i,int j)/编码的重要哈夫曼树路径递归算法int a,b;a=i;。

    7、b=j=ti.parent;if(tj.parent!=-1)7i=j;hfmtpath(t,i,j);if(tb.lchild=a)printf(0);elseprintf(1);void phfmnode(hfmt t)/对字符进行初始编码int i,j,a;printf(n-n);printf(*哈夫曼编码*);for(i=0;in;i+)j=0;printf(n);printf(tt%ct,ti.key,ti.weight);hfmtpath(t,i,j);printf(n-n);void encoding(hfmt t)/对用户输入的电文进行编码char r1000;/用来存储输入的。

    8、字符串int i,j;printf(nn请输入需要编码的字符:);gets(r);printf(编码结果为 :);for(j=0;rj!=0;j+)for(i=0;in;i+)if(rj=ti.key)hfmtpath(t,i,j);printf(n);8void decoding(hfmt t)/对用户输入的密文进行译码char r100;int i,j,len;j=2*n-2;/j初始从树的根节点开始printf(nn请输入需要译码的字符串:);gets(r);len=strlen(r);printf(译码的结果是 :);for(i=0;ilen;i+)if(ri=0)j=tj.lchil。

    9、d;if(tj.lchild=-1)printf(%c,tj.key);j=2*n-2;else if(ri=1)j=tj.rchild;if(tj.rchild=-1)printf(%c,tj.key);j=2*n-2;printf(nn);int main()int i,j;hfmt ht;char flag;printf(|-|n);printf(|信管 1002- 林左权 -15号 |n);printf(|*|n);printf(|哈夫曼编码课程设计|n);printf(|*|n);printf(|设计完成时间 :2011/6/27|n);9printf(|-|n);creathfmt。

    10、(ht);printhfmt(ht);phfmnode(ht);printf(n-n);printf(*编码&译码&退出*);printf(n【 1】编码 t 【 2】 t译码 t 【 0】退出 );printf(n您的选择: );flag=getchar();getchar();while(flag!=0)if(flag=1)encoding(ht);else if(flag=2)decoding(ht);elseprintf(您的输入有误,请重新输入。n);printf(n*编码&译码&退出*);printf(n【1】编码 t 【2】 t译码 t 【0】退出 );printf(n您的选择: );flag=getchar();getchar();printf(nn-n);printf(*欢迎使用林左权的哈夫曼编码系统*n);printf(-n);system(pause);五、测试数据及测试结果:例如:1011六、心得体会:(略)12。

    展开全文
  • 1、C语言 - 哈夫曼编码实验报告福建工程学院课程设计课程:数据结构题目:哈夫曼编码和译码专业:信息管理信息系统班级:1002 班座号:15 号姓名:林左权2011 年6 月27 日2实验题目:哈夫曼编码和译码一、要解决的...

    《C语言-哈夫曼编码实验报告》由会员分享,可在线阅读,更多相关《C语言-哈夫曼编码实验报告(12页珍藏版)》请在人人文库网上搜索。

    1、C语言 - 哈夫曼编码实验报告福建工程学院课程设计课程:数据结构题目:哈夫曼编码和译码专业:信息管理信息系统班级:1002 班座号:15 号姓名:林左权2011 年6 月27 日2实验题目:哈夫曼编码和译码一、要解决的问题利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码 (复原)。对于双工信道(即可以双向传输信息的信道) ,每端都需要一个完整的编/译码系统。二、算法基本思想描述:根据给定的字符和其中每个字符的频度 ,构造哈夫馒树,并输出字符集中每个字符的哈夫曼编码 .将给定的字。

    2、符串根据其哈夫曼编码进行编码 ,并进行相应的译码 .三、设计1. 数据结构的设计(1)哈夫曼树的表示设计哈夫曼树的结构体( htnode ),其中包含权重、左右孩子、父母和要编码的字符。用这个结构体( htnode )定义个哈夫曼数组( hfmt )。迷宫定义如下:typedef structint weight;int lchild;int rchild;int parent;char key;htnode;typedef htnode hfmtMAXLEN;( 2)对原始字符进行编码初始化哈夫曼树( inithfmt )。从终端读入字符集大小 n,以及 n 个字符和 n 个权值,建立哈夫曼。

    3、树。并显示出每个字符的编码。31.void inithfmt(hfmt t)/对结构体进行初始化2.void inputweight(hfmt t)/输入函数3.void selectmin(hfmtt,int i,int*p1,int*p2)/ 选中两个权值最小的函数4.void creathfmt(hfmt t)/创建哈夫曼树的函数5.void phfmnode(hfmt t)/ 对字符进行初始编码( 3)对用户输入的字符进行编码void encoding(hfmt t)/对用户输入的电文进行编码char r1000;/用来存储输入的字符串int i,j;printf(nn请输入需要编码的。

    4、字符:);gets(r);printf(编码结果为 :);for(j=0;rj!=0;j+)for(i=0;i#include #include #define MAXLEN 100typedef structint weight;int lchild;int rchild;int parent;char key;htnode;typedef htnode hfmtMAXLEN;int n;void inithfmt(hfmt t)/对结构体进行初始化int i;printf(n);printf(-n);printf(*输入区*n);printf(n请输入 n=);scanf(%d,&n);g。

    5、etchar();for(i=0;itj.weight)min1=tj.weight;*p1=j;for(j=0;jtj.weight & j!=(*p1)/注意 j!=(*p1)min2=tj.weight;*p2=j;6void creathfmt(hfmt t)/创建哈夫曼树的函数int i,p1,p2;inithfmt(t);inputweight(t);for(i=n;i2*n-1;i+)selectmin(t,i-1,&p1,&p2);tp1.parent=i;tp2.parent=i;ti.lchild=p1;ti.rchild=p2;ti.weight=tp1.weight+t。

    6、p2.weight;void printhfmt(hfmt t)/打印哈夫曼树int i;printf(-n);printf(*哈夫曼编数结构 :*n);printf(tt 权重 t 父母 t 左孩子 t 右孩子 t 字符 t); for(i=0;i2*n-1;i+)printf(n);printf(tt%dt%dt%dt%dt%c,ti.weight,ti.parent,ti.lchild,ti.rchild,ti.key);printf(n-n);printf(nn);void hfmtpath(hfmt t,int i,int j)/编码的重要哈夫曼树路径递归算法int a,b;a=i;。

    7、b=j=ti.parent;if(tj.parent!=-1)7i=j;hfmtpath(t,i,j);if(tb.lchild=a)printf(0);elseprintf(1);void phfmnode(hfmt t)/对字符进行初始编码int i,j,a;printf(n-n);printf(*哈夫曼编码*);for(i=0;in;i+)j=0;printf(n);printf(tt%ct,ti.key,ti.weight);hfmtpath(t,i,j);printf(n-n);void encoding(hfmt t)/对用户输入的电文进行编码char r1000;/用来存储输入的。

    8、字符串int i,j;printf(nn请输入需要编码的字符:);gets(r);printf(编码结果为 :);for(j=0;rj!=0;j+)for(i=0;in;i+)if(rj=ti.key)hfmtpath(t,i,j);printf(n);8void decoding(hfmt t)/对用户输入的密文进行译码char r100;int i,j,len;j=2*n-2;/j初始从树的根节点开始printf(nn请输入需要译码的字符串:);gets(r);len=strlen(r);printf(译码的结果是 :);for(i=0;ilen;i+)if(ri=0)j=tj.lchil。

    9、d;if(tj.lchild=-1)printf(%c,tj.key);j=2*n-2;else if(ri=1)j=tj.rchild;if(tj.rchild=-1)printf(%c,tj.key);j=2*n-2;printf(nn);int main()int i,j;hfmt ht;char flag;printf(|-|n);printf(|信管 1002- 林左权 -15号 |n);printf(|*|n);printf(|哈夫曼编码课程设计|n);printf(|*|n);printf(|设计完成时间 :2011/6/27|n);9printf(|-|n);creathfmt。

    10、(ht);printhfmt(ht);phfmnode(ht);printf(n-n);printf(*编码&译码&退出*);printf(n【 1】编码 t 【 2】 t译码 t 【 0】退出 );printf(n您的选择: );flag=getchar();getchar();while(flag!=0)if(flag=1)encoding(ht);else if(flag=2)decoding(ht);elseprintf(您的输入有误,请重新输入。n);printf(n*编码&译码&退出*);printf(n【1】编码 t 【2】 t译码 t 【0】退出 );printf(n您的选择: );flag=getchar();getchar();printf(nn-n);printf(*欢迎使用林左权的哈夫曼编码系统*n);printf(-n);system(pause);五、测试数据及测试结果:例如:1011六、心得体会:(略)12。

    展开全文
  • 1、C语言-哈夫曼编码实验报告11课程:题目:专业:班级:座号:姓名:福建工程学院课程设计数据结构 哈夫曼编码和译码 信息管理信息系统1002 班 15号 林左权2011年 6月 27日实验题目:哈夫曼编码和译码一、要解决的问题...

    《C语言-哈夫曼编码实验报告》由会员分享,可在线阅读,更多相关《C语言-哈夫曼编码实验报告(18页珍藏版)》请在人人文库网上搜索。

    1、C语言-哈夫曼编码实验报告11课程:题目:专业:班级:座号:姓名:福建工程学院课程设计数据结构 哈夫曼编码和译码 信息管理信息系统1002 班 15号 林左权2011年 6月 27日实验题目:哈夫曼编码和译码一、要解决的问题利用哈夫曼编码进行信息通信可以大大提高信道利 用率,缩短信息传输时间,降低传输成本。但是,这要 求在发送端通过一个编码系统对待传数据预先编码,在 接收端将传来的数据进行译码(复原)。对于双工信道(即 可以双向传输信息的信道),每端都需要一个完整的编/ 译码系统。二、算法基本思想描述:根据给定的字符和其中每个字符的频度,构造哈夫馒树,并输出字符集中每个字符的哈夫曼编码.将给定。

    2、的字符串根据其哈夫曼编码进行编码,并进行相应的译码.三、设计1.数据结构的设计(1)哈夫曼树的表示设计哈夫曼树的结构体(htnode),其中包含权重、左右孩子、父母和要编码的字符。用这 个结构体(htnode)定义个哈夫曼数组(hfmt)。迷宫定义如下:typedef structint weight;int lchild;int rchild;int pare nt;char key;ht no de;typedef htnode hfmtMAXLEN;(2)对原始字符进行编码初始化哈夫曼树(inithfmt )。从终端读入字符集大小n,以及n个字符和n个权值, 建立哈夫曼树。并显示出每个字。

    3、符的编码。1. void in ithfmt(hfmt t)对结构体进行初始化2. void inputweight(hfmt t)/ 输入函数3. void selectmin(hfmt t,int i,int *p1,int *p2) 选中两个 权值最小的函数4. void creathfmt(hfmt t)/创建哈夫曼树的函数5. void phfmnode(hfmt t)/对字符进行初始编码(3) 对用户输入的字符进行编码void en codi ng(hfmt t)/对用户输入的电文进行编码char r1000;用来存储输入的字符串int i,j;printf(nn请输入需要编码的字。

    4、符:);gets(r);printf(编码结果为:);for(j=0;rj!=0;j+)for(i=0;i#i nclude #include #defi ne MAXLEN 100 typedef struct int weight; int lchild; int rchild;int pare nt; char key;ht no de;typedef htnode hfmtMAXLEN;int n;void in ithfmt(hfmt t) int i;prin tf(n);对结构体进行初始化prin tf(- printf(*n); printf(n请输入 n=);scan f(%。

    5、d,&n); getchar();for(i=0;itj.weight)min 1=tj.weight;*p1=j;for(j=0;jtj.weight & j!=(*p1)/注意 j!=(*p1)min 2=tj.weight;*p2=j;void creathfmt(hfmt t)创建哈夫曼树的函数int i,p1,p2;in ithfmt(t);in putweight(t);for(i=n;i*刊-曲*/对轟1 21 译码【町退出馬籬:石蔚F退岀翰翳鑿隘Z输入需要嘗码的宇符串= 111110100 是:dchaNWiMKXKlifHKHltflflOfKJfKJt 址出扁 勺咅艮 H 羊可 B|88f j艮 出| *t*t*H*-*H*M_BHlH*H*H*L*HlH* 译码 5】退出六、心得体会:(略。

    展开全文
  • // 哈夫曼树.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #define MAX 20 using namespace std; typedef char valType; typedef double wghType; struct HFMnode ...
  • 最近完成了数据结构课程设计,被分到的题目是《哈夫曼编码和解码》,现在在这篇博文里分享一下自己的成果。  我在设计时,在网上参考了很多老师和前辈的算法和代码,向他们表示感谢!他们的成果给了我很多启示和...
  • 哈夫曼树的建立以及哈夫曼编码

    千次阅读 2018-12-21 08:25:34
    为这些字母设计相应的哈夫曼编码!方法:每次在哈夫曼树构造过程中,两个最小数的选择总是最小的在左,而次小的在右。 输入输出样例:1组 #1 样例输入: abcdefg# //#代表结束符 0.31 0.16 0.10 0.08 0.11 0.20...
  • 本文实例为大家分享了C语言实现哈夫曼编码的具体代码,供大家参考,具体内容如下代码来自于《小甲鱼C++快速入门》主程序main.cpp#include "stdafx.h"#include #include "huffman.h"int main(){htTree *codeTree = ...
  • C语言哈夫曼编码

    2012-07-06 13:36:45
    完整的哈夫曼编码课程设计,根据问题需要做一个简单的实现储存哈夫曼表和生成哈夫曼编码的程序,并通过操作使之建立哈夫曼树,并生成哈夫曼编码。通过练习这个简单的程序,能够使我们更加了解哈夫曼编码,知道哈夫曼...
  • 哈夫曼树的建立以及哈夫曼编码的编译以及解码 数据结构作业—哈夫曼树 此程序的目的是从一个text文本中读取字符,然后依据哈夫曼树的原理,将其中的字母进行编码成二进制字符串,然后输入一个二进制字符串可以将其...
  • 《数据结构C语言哈夫曼编码译码》由会员分享,可在线阅读,更多相关《数据结构C语言哈夫曼编码译码(16页珍藏版)》请在人人文库网上搜索。1、实训报告题 目: 哈夫曼树编码译码院 系: 信息工程系专 业: 计算机科学...
  • 创建哈夫曼树 #include <iostream> using namespace std; //函数结果状态代码 #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define OVERFLOW -2 typedef int MyDataType; struct Huffman...
  • PAGEPAGE 11福 建 工 程 学 院课程设计课 程: 数据结构题 目: 哈夫曼编码和译码专 业: 信息管理信息系统班 级: 1002班座 号: 15号姓 名: 林左权2011年 6月 27日一、要解决的问题利用哈夫曼编码进行信息通信...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,139
精华内容 2,455
关键字:

哈夫曼编码建立