下载此文档

哈夫曼编码译码器.docx


文档分类:通信/电子 | 页数:约27页 举报非法文档有奖
1/27
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/27 下载此文档
文档列表 文档介绍
哈夫曼编码译码器
学院班级:    信息工程学院  软件1501          
指导教师:     朱俊武             
小组成员: 刘洋 蒋佳烨 冀若含   
本人学号:  151303107           
报告书写:      冀若含         
学生成绩:              
目录
一、总体介绍·····························03-04
二、详细设计·····························04—11
三、运行测试·····························11-12
四、课设总结·····························13-13
五、附录代码·····························13—19
一、总体介绍

ﻩ我们小组做了两个版本,其中一个为文件操作版,。我主要负责的是构造哈夫曼树,给出各个字符的哈夫曼编码,加密操做,整个键盘操作版系统的代码重组、编辑。开发的过程中使用了Codelite、Dev、Vc等软件。参考书籍为《数据结构》(c语言版)。
其中文件操作版的具体实现为:
能够实现对26个小写字母外加空格进行哈夫曼编码,并能够对一整篇文章(有小写字母和空格组成)进行加密,生成密码文件。最后根据生成的密码翻译出原文并存档。
在使用程序时,使用者只需要对ToBetran文件进行原文的输入(使用小写字母或空格),加密和解密功能由程序自主来完成。
程序运行的过程中会输出进行编码的26个小写字母和空格(字符型),并输出其对应的权值(整型)。。
键盘操作版为:
要求从键盘输入字符集和字符的权值,大部分字符均可输入,需要各个字符的权值不能相同。
利用输入的权值建立哈夫曼树,得到每个字符的前缀编码。
输入字符串,程序对其进行加密。
输入密文(1010101…………….。)对密文进行解密。
两个版本都利用了哈夫曼树解决问题,通过建立哈夫曼树,得出每个字符的独特前缀编码,也就是密文,。(之前想过字符串的匹配得到明文但是算法太为复杂)。

本系统分为三个大的模块:构造哈夫曼树,编码,译码.
1。3 功能难点
ﻩ本系统的实现难点在于哈夫曼树的构造。编码、译码功能的实现都是基于哈夫曼树的。
二、详细设计
2.1哈夫曼树的构造
哈夫曼树,又称最优树,是一类带权路径长度最短的树,:
: 根据给定的n个权值{w1,w2,…wn}构成n棵二叉树的集合F={T1,T2,。。,Tn},其中每棵二叉树Ti中只有一个带权wi的根节点,左右子树均空。
2. 找最小树:在F中选择两棵根结点权值最小的树作为左右子树构造一棵新的二叉树,且至新的二叉树的根结点的权值为其左右子树上根结点的权值之和.
3. 删除与加入:在F中删除这两棵树,并将新的二叉树加入F中.
4。 判断:重复前两步(2和3),直到F中只含有一棵树为止。该树即为哈夫曼树。
2.2 代码实现
哈夫曼树和哈夫曼编码的储存表示
typedef struct{
ﻩint weight;
int parent,lchild,rchild;
}HTNode,*HuffmanTree;//动态分配数组储存哈夫曼树
typedef char* *HuffmanCode;//动态分配数组储存哈夫曼编码表
void Select(HuffmanTree HT,int p,int *s1,int *s2)
该函数的功能为:找出HT[1….i—1]中parent为0且weight最小的两个结点,其序号为s1,s2。
void HuffmanCoding(HuffmanTree HT,HuffmanCode HC,int *w,int n,char *a)
该函数的功能为构造哈夫曼树HT,并求出n个字符的哈夫曼编码HC。
以下为两个函数的流程图或详细设计。
void HuffmanCoding(HuffmanTree HT,HuffmanCode HC,int *

哈夫曼编码译码器 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数27
  • 收藏数0 收藏
  • 顶次数0
  • 上传人AIOPIO
  • 文件大小249 KB
  • 时间2021-02-13