基于C语言的哈夫曼编码的实现

时间:2024-01-27 点赞:50544 浏览:102080 作者原创标记本站原创

本文关于数据结构及参考文献及工程技术方面的免费优秀学术论文范文,数据结构方面有关论文例文,与基于C语言的哈夫曼编码的实现相关学士学位论文范文,对不知道怎么写数据结构论文范文课题研究的大学硕士、本科毕业论文开题报告范文和文献综述及职称论文的作为参考文献资料下载。

摘 要 :介绍了哈夫曼编码的思想,以及利用C语言实现哈夫曼编码的详细过程.

关 键 词 :哈夫曼编码;权值;哈夫曼树;二叉树

中图分类号:TP312文献标识码:A文章编号:16727800(2012)009004003

0引言

数据通讯中,经常需要将传送的字符转换为由二进制字符0或1组成的二进制串,我们称此过程为编码.而哈夫曼树可以用来构造代码总长度最短的编码方案,将需要编码的字符作为叶节点,字符在电文中出现的频率作为权值,构造一颗二叉树,规定哈夫曼树的左分支为0,右分支为1,则从根节点到每个叶结点所经历的分支对应的0和1组成的数列变为该结点对应的字符编码.这种总长度最短的不等长编码就叫做哈夫曼编码.利用哈夫曼编码通信可以大大提高通信利用率,缩短通信传输时间,降低传输成本.

1问题描述

利用C语言编程实现哈夫曼编码.要求:用户输入各字母及使用频率(或频数),用程序输出二进制表示的哈夫曼编码,并采用菜单和会话方式的界面.

2算法思想

(1)哈夫曼编码根据与n个权值{w1,w2,等wn}对应的n个结点构成n棵二叉树的森林,F等于 {T1,T2,等Tn},其中每棵二叉树Ti(1<=I<=n)都有一个权值为wi的根结点,其左右子树均为空.

(2)在森林F中选出两棵根结点权值最小的树作为一棵新树的左右子树,且置新树的附加根结点的权值为其左右树上根结点的权值之和.

(3)从F中删除这两棵树,同时把新树加入F中.

(4)重复(2)和(3)直到只含有一棵树为止,此时便是哈夫曼树.

(5)树从根到每个叶子都有一条路径,对路径上的各分支约定,指向左子树的分支表示 ‘0’ 码,指向右子树的分支表示 ‘1’ 码 .

(6)取每条路径上 ‘0’ 或 ‘1’ 的序列作为各个叶子对应的字符编码,这就是哈夫曼编码.

3逻辑设计

树的逻辑结构是层次结构,树中有且仅有一个没有前驱的结点ht[0]称为树的根,除根ht[0]以外的每个结点都有且只有一个前驱,对于不是根的每一个结点ht[I]都有一个线性序列ht[0],ht[1],等ht[I-1],ht[I] (I>等于0),其中ht[I]是ht[I-1]的后继.

4存储结构的设计

7结语

此程序是根据笔者平时积累的教学经验,结合数据结构和C语言编程技术开发完成.该算法简单易懂,源代码在visual C++中运行调试通过,对哈夫曼编码理论的学习有着较大帮助.

相关论文

c语言毕业文致谢范例

为您写身体健康毕业论文和职称论文提供身体健康相关大学毕业论文范文,与c语言毕业文致谢范例相关论文范文,包括关于身体健康及公司实习及科。

C语言程序设计教学方法

该文为关于实验教学相关研究生毕业论文开题报告范文,与C语言程序设计教学方法相关毕业论文格式,可作为论文格式专业实验教学论文写作研究的。

C++语言实验教学的探究

这篇实验教学论文范文属于地理教学免费优秀学术论文范文,实验教学方面有关毕业论文开题报告范文,与C++语言实验教学的探究相关教育教学论文。

计算机C语言编辑程序技巧

为您写计算机技术毕业论文和职称论文提供计算机技术类毕业论文的格式范文,与计算机C语言编辑程序技巧相关论文范文数据库,包括关于计算机技。

C语言学习过程中编程技巧的应用

此文是一篇语言论文范文,关于语言类论文例文,与C语言学习过程中编程技巧的应用相关毕业论文模板。适合不知如何写语言及学生及技巧方面的论。

基于C++语言的跨平台软件开发的实现

本文关于软件开发及操作系统及平台方面的免费优秀学术论文范文,软件开发方面有关论文范文素材,与基于C++语言的跨平台软件开发的实现相关专。

C语言中字符数据的输入与输出问题

本文关于字符及函数及字符串方面的免费优秀学术论文范文,字符类有关论文范文集,与C语言中字符数据的输入与输出问题相关硕士学位毕业论文范。