- 12
- 0
- 约5.67千字
- 约 10页
- 2018-01-13 发布于河南
- 举报
数据结构实验报告(哈夫曼树)
数据结构实验报告
实验题目: Huffman编码与解码
姓名:
学号:
院系:
实验名称:
Huffman编码与解码实验
问题描述:
本实验需要以菜单形式完成以下功能:
1.输入电文串
2.统计电文串中各个字符及其出现的次数
3.构造哈弗曼树
4.进行哈弗曼编码
5.将电文翻译成比特流并打印出来
6.将比特流还原成电文
数据结构的描述:
逻辑结构:
本实验可用二叉树实现,其逻辑结构为一对二的形式,即一个结点对应两个结点。在实验过程中我们也应用到了栈的概念。
存储结构:
使用结构体来对数据进行存储:
typedef struct
{
int weight;
int parent,lc,rc;
}HTNode,*HuffmanTree;
typedef struct LNode
{
char *elem;
int stacksize;
int top;
}SqStack;
在main函数里面定义一个哈弗曼树并实现上述各种功能。
程序结构的描述:
本次实验一共构造了10个函数:
void HuffTree(HuffmanTree HT,int n[],int mun);
此函数根据给定的mun个权值构建哈弗曼树,n[]用于存放num个权值。
2.void Select(HuffmanTree HT,int n,int i,int s1,int s2);
此函数用于在HT[1,i-1]中选择parent为0且weight为最小的两个结点,其 下标分别为s1,s2.
void HuffmanCoding(HuffmanTree HT,char **HC,int n);
此函数从哈弗曼树HT上求得n 个叶子结点的哈弗曼编码并存入数组HC中。
void Coding(HuffmanTree HT,char **HC,int root,SqStack S);
此函数用于哈弗曼编码,先序遍历哈弗曼树HT,求得每个叶子结点的编码字符串,存入数组HC,S为一个顺序栈,用来记录遍历路径,root是哈弗曼数组HT中根结点的位置下标。
void InitStack(SqStack S);
此函数用于初始化一个栈。
void Pop(SqStack S,char e);
此函数为出栈操作。
void Push(SqStack S,char e);
此函数为进栈操作。
int StackLength(SqStack S);
此函数用于求栈长,返回一个int型的值。
int Find(char a,char s[],int num);
此函数用于查找字符a在电文串中的位置。
int Recover(HuffmanTree HT,char **HC,char string[],char a[],char b[],int n);
此函数用于将比特流还原成电文。
调试分析:
输入任意一个字符串,如输入welcometoustc:运行结果如下:
按照提示输入任意一个或多个哈弗曼编码,如输入11111110101:
结果正确。
若输入一个11111:
结果正确。
实验完成!
实验体会和收获:
本次实验提高了对哈弗曼树的认识,同时加深了对二叉树的理解,在栈的运用上更加熟练,对数组的应用也有了提高。
源代码:
#includestdio.h
#includestdlib.h
#includemalloc.h
#includestring.h
typedef struct
{
int weight;
int parent,lc,rc;
}HTNode,*HuffmanTree;
typedef struct LNode
{
char *elem;
int stacksize;
int top;
}SqStack;
#define size 20
void HuffTree(HuffmanTree HT,int n[],int mun);
void Select(HuffmanTree HT,int n,int i,int s1,int s2);
void HuffmanCoding(HuffmanTree HT,char **HC,int n);
void Coding(HuffmanTree HT,char **HC,int root,SqStack S);
void InitStack(SqStack S);
void Pop(SqStack S,char e);
void Push(SqStack S,char e);
int StackLength(SqStack S);
int Find(char a,char s[],int num);
int Recov
您可能关注的文档
最近下载
- 2025烟台南山学院单招《数学》复习提分资料(含答案详解).docx VIP
- 湖南省湘一名校2026届高三上学期12月质量检测物理试卷(含答案).pdf VIP
- 2025年上海高考数学二轮复习:热点题型4 统计与概率(六大题型)原卷版+解析.pdf VIP
- WordExcel2010中文版办公专家从入门到精通.pdf VIP
- 新教材人教A版高中数学选择性必修第三册习题答案.docx VIP
- 专题08 古诗鉴赏(解析版)备战2024年中考语文真题题源解密(全国通用.docx VIP
- 四年级奥数专题加法原理和乘法原理.docx VIP
- 实施指南(2025)《JBT 14627-2023 增材制造 点光源立体光固化工艺规范》.pptx VIP
- JB∕T 14627-2023 增材制造 点光源立体光固化工艺规范.pdf
- 传统拜师礼仪培训课件PPT.pptx VIP
原创力文档

文档评论(0)