数学与计算机学院 数据结构 实验报告
年级 09数计
学号 ***
姓名 **
专业 数电
实验地点 主楼401
指导教师 **
实验项目 哈夫曼树解决编码解码
实验日期 XX年12月24日
一、实验目的
本实验的目的是通过对简单的哈夫曼编/译码系统的设计与实现来熟练掌握树形结构在实际问题中的应用。
二、实验问题描述
利用哈夫曼编码进行通信可以大大提高通信利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码,此试验即设计这样的一个简单的编/译码系统。系统应该具备如下的几个功能。
1、求出各个叶子节点的权重值
输入一个字符串,统计其中各个字母的个数和总的字母个数。
2、构造哈夫曼树
统计出的字母种类为叶子结点个数,每个字母个数为相应的权值,建立哈
夫曼树。
3、打印哈弗曼树的功能模块
按照一定形式打印出哈夫曼树。
4、编码
利用已经建立好的哈夫曼树进行编码。
5、译码
根据编码规则对输入的代码进行翻译并将译码。
…… …… 余下全文
20##级数据结构实验报告
实验名称: 实验3——哈夫曼树
学生姓名: 陈家斌
班 级: 2009211121
班内序号: 16
学 号: 09210619
日 期: 20##年12月3日
1.实验要求
【实验目的】
通过选择下面两个题目之一进行实现,掌握如下内容:
Ø 掌握二叉树基本操作的实现方法
Ø 了解赫夫曼树的思想和相关概念
Ø 学习使用二叉树解决实际问题的能力
【题目】
利用二叉树结构实现赫夫曼编/解码器。
【基本要求】
1、初始化(Init):能够对输入的任意长度的字符串s进行统计,统计每个字符的频度,并建立赫夫曼树
2、建立编码表(CreateTable):利用已经建好的赫夫曼树进行编码,并将每个字符的编码输出。
3、编码(Encoding):根据编码表对输入的字符串进行编码,并将编码后的字符串输出。
4、译码(Decoding):利用已经建好的赫夫曼树对编码后的字符串进行译码,并输出译码结果。
…… …… 余下全文
一、 需求分析
1、 本演示程序实现Haffman编/译码器的作用, 目的是为信息收发站提供一个编/译系统,从而使信息收发站利用Haffman编码进行通讯,力求达到提高信道利用率,缩短时间,降低成本等目标。系统要实现的两个基本功能就是:① 对需要传送的数据预先编码;② 对从接收端接收的数据进行译码;
2、 本演示程序需要在终端上读入n个字符(字符型)及其权值(整形),用于建立Huffman树,存储在文件hfmanTree.txt中;如果用户觉得不够清晰还可以打印以凹入表形式显示的Huffman树;
3、 本演示程序根据建好的Huffman树,对文件的文本进行编码,结果存入文件CodeFile中;然后利用建好的Huffman树将文件CodeFile中的代码进行译码,结果存入文件TextFile中;最后在屏幕上显示代码(每行50个),同时显示对CodeFile中代码翻译后的结果;
4、 本演示程序将综合使用C++和C语言;
5、 测试数据:
(1)教材例6-2中数据:8个字符,概率分别是0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11,可将其的权值看为5,29,7,8,14,23,3,11
…… …… 余下全文
20##级数据结构实验报告
实验名称: 实验三——树
学生姓名: 王璇
班 级: 2009211118
班内序号: 29
学 号: 09210543
日 期: 20##年12月20日
1.实验要求
利用二叉树结构实现哈夫曼编/解码器
基本要求如下:
初始化:能够对输入的任意长度的字符串s进行统计,统计每个字符的频率,并建立哈夫曼树.
建立编码表:利用已经建好的哈夫曼树进行编码,并将每个字符的编码输出.
编码: 根据编码表对输入的字符串进行编码,并将编码后的字符串输出.
编码:利用已经建好的哈夫曼树对编码后的字符串进行译码,并输出译码结果.
计算输入的字符串编码前和编码后的长度,并进行分析,讨论哈夫曼编码的压缩效果.
2. 程序分析
哈夫曼树类里的成员函数声明如下:
class Huffman
{
private:
HNode *HTree;//哈夫曼树
HCode *HCodeTable;//哈夫曼编码表
…… …… 余下全文
哈夫曼编码器实验报告
学院:计算机学院
班级:计科0801班
姓名:***
学号:***
一.实验目的
练习树和哈夫曼树的有关操作,和各个算法程序,理解哈夫曼树的编码和译码
二.实验环境
Microsoft visual c++
三、问题描述
利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编码/译码系统。试为这样的信息收发站写一个哈夫曼编码的编码/译码器。
四、需求分析
(1)初始化;从终端输入字符集的大小n,以及n个字符和n个权值建立哈夫曼树。
(2)输出哈夫曼树,及各字符对应的编码。
(3)编码:利用建好的哈夫曼树,对输入的待发送电文进行编码。同时输入原文及编码串。
(4)译码:利用建好的哈夫曼树,对输入的已接收电文进行译码。同时输入编码串及原文。
五、概要设计
#include <iostream.h>
…… …… 余下全文
数据结构课内实验报告
哈夫曼树
专业:计算机信息工程学院
班级:物联网
姓名: 25678899
学号: 23458900
指导老师:张红
“哈夫曼树”实验报告
一、实验目的:
(1)了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;
(2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
(3)提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
(4)训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
二、实验内容:
a.随机生成数据并统计
b.创建哈夫曼树;
c.哈夫曼编码
d.哈夫曼译码;
三、概要设计
1、创建哈夫曼树的描述:
数据结构:数据的逻辑结构是树状结构;采用静态的三叉链表存放;
算法思想:1.先把三叉链表中1-N个元素进行初始化,存放叶子节
点,他们都没有孩子和双亲。2.再初始化后n-1个非叶子节点元素。3.
从当前森林中(在森林中树的根节点的双亲为0)选择两棵根的权值最
小的树;删除合并是将选到的两棵树的根权和存入数组当前最前面的空
…… …… 余下全文
哈夫曼树及其应用实验报告
实验 四 哈夫曼树及其的应用
一、实验目的
1.在二叉树基本操作的基础上,掌握对二叉树的一些其它操作的具体实现方法。
2.掌握构造哈夫曼树以及哈夫曼编码的方法。
3、熟练掌握哈夫曼树(最优二叉树)特征及其应用
二、实验内容
题目一、哈夫曼树和哈夫曼编码:
从终端输入若干个字符,统计(或指定)字符出现的频率,将字符出现的频率作为结点的权值,建立哈夫曼树,然后对各字符进行哈夫曼编码。
设计要求:
⑴ 哈夫曼殊和哈夫曼编码的存储表示参考教材事例
⑵ 在程序中构造四个子程序为
① int freqchar(char *text, HTree *t) /*统计字符出现的频率*/
② int createhtree(HTree *t) /*根据字符出现的频率建立哈夫曼树*/
③ void coding(HTree *t,int head_i,char *code)
/*对哈夫曼树进行编码*/
④ void printhtree(HTree *t,int head_i,int deep,int* path)
…… …… 余下全文