- 2
- 0
- 约4.3千字
- 约 13页
- 2023-08-27 发布于浙江
- 举报
哈夫曼树及哈夫曼编码译码的实现 - 福建农林大学
福建农林大学计算机与信息学院
(程序设计类课程)
实验报告
课程名称: 数据结构 姓 名: 吴秋月
系: 计算机 专 业: 计算机科学与技术(专升本) 年 级: 2008级
081806111 学 号:
指导教师: 黄思先 职 称: 副教授
- 1 -
福建农林大学计算机与信息学院实验报告 系: 计科(专升本) 专业: 计算机科学与技术 年级: 08级 姓名: 吴秋月 学号: 081806111 实验室号:__田514 计算机号: 18
实验二 哈夫曼树及哈夫曼编码译码的实现
一、实验目的和要求
1,掌握树及二叉树的基本概念
2,熟悉二叉树的运算和应用
3,理解哈夫曼树的概念及哈夫曼编码译码的实现
二、实验内容和原理
实验内容:
输入一个电文字符串,构造出哈夫曼树并实现该字符串的二进制输出,并统计该字
符串中的字符总数目及二进制编码的总长度。
实验原理:
哈夫曼树是由n个带权叶子结点构成的所有二叉树中带权路径长度WPL最小的二
叉树。本实验中,要输入电文字符以及它的权值,用Hunffman算法构建哈夫曼树。定
义一个存储哈夫曼编码结果的二维数组。为使每一个字符编码都不是另一个字符编码的
前缀,规定哈夫曼树中左分枝以“0”编码,右分枝以“1”编码。 三、实验环境
硬件环境:
多媒体实验室
学生用微机
局域网环境
软件环境:
Windows xp professional
Turbo C/C++ for windows
四、算法描述及实验步骤
1,算法描述
- 2 -
- 3 -
- 4 -
- 5 -
ht [0] [1] [2] [3] [4] [5] [6] [7]
34210 w 5 919 ?? ? ?
lch 32 6
rch 1 5 4
parent 5 6 5 7 67
3,4 ,2,10为叶子权值。
ch a b c d
3 2 3 1
0 1 1 0 0 01 0 1 code
star star star star 2,算法描述及实验步骤
在Turbo C/C++ for windows新建名为huffman.c的c程序项目,然后进行编译调试,若编译
- 6 -
链接都通过,则运行程序,得出正确结果。正确的程序代码如下所示: #include stdio.h
#include conio.h
#include string.h
#define N0 10
typedef struct node1
{ int w,lch,rch,parent;
// 哈夫曼树结点的数据类型 }HFT[2*N0-1+1];
HFT ht;
struct node2
{ char ch;
int start;
int code[N0];
}hc[N0+1]; // 字符的哈夫曼编码信息的数据类型
int n,m;
void select(int t, int *s1, int *s2) //选择一个权值最小和次小的结点作为叶子结点
{ int w1=32767,w2=w1,i;
for(i=1; i=t; i++)
if( ht[i].parent==0 ) //先找出前面2个无双亲(即未合并的)结点的位置
if( ht[i].w w1 ) //选择权值最小和次小的数
{ w2=w1;
*s2=*s1;
w1=ht[i].w;
*s1=i; //s1指向最小的数
} else if( ht[i].w w2 )
{ w2=ht[i].w;
*s2=i; //s2指向次小的数
}
}
void creat_ht_hc() // 建立哈夫曼树的函数 { int s1,s2,i,child,parent;
freopen(huffman.in, r, stdin); //读取文件信息,文件名为huffman.in
freopen(huffman.out, w, stdout); //写入文件信息,文件名为huffman.out
scanf(%d, n); //输入叶子个数n
m=2*n-1; //总结点数m为2*n-1
- 7 -
for(i=1; i=n; i++) //分别输入叶子字符以及它的权值
{
scanf(\n%c%d, hc[i].ch, ht[i].w);
}
for(i=n+1; i=m; i++) //建树
{ select( i-1, s1, s2 ); //调用select()函数
ht[i].w = ht[s1].w+ht[s2].w;
ht[i].lch=s1; //ht[i]左孩子指向最小的数
您可能关注的文档
最近下载
- 揭煤地质说明书2020.5.28.doc VIP
- CB 20652-2018CN 舰船燃气轮机轮盘超转试验方法.docx
- DB37_T 5345-2025《建筑工程流态固化土应用技术规程》.pdf
- 2025年房地产经纪人智慧社区数据化运营与决策支持专题试卷及解析.pdf VIP
- 2025年拍卖师拍卖活动备案与监管流程专题试卷及解析.pdf VIP
- 2025年特许金融分析师行为经济学与宏观经济决策专题试卷及解析.pdf VIP
- 2025年拍卖师无形资产拍卖纠纷的典型案例分析与裁判思路专题试卷及解析.pdf VIP
- 面向自动驾驶场景的联邦学习硬件加速与车载通信协议深度集成研究.pdf VIP
- 2025《基于NB-IoT的烟雾报警系统设计》21000字.docx
- 小吃街夜市规划方案 (2).docx VIP
原创力文档

文档评论(0)