数据结构实验报告(哈夫曼树).docVIP

  • 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

文档评论(0)

1亿VIP精品文档

相关文档