- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计---- 赫夫曼编码系统
课程设计报告
课程设计题目 : 赫夫曼编码系统
学生姓名 : 安国栋
专 业 : 计算机科学与技术
班 级 : 1320701
学 号 : 201320070105
指导教师 : 刘志峰
2014年 06 月 19 日
目 录
设计要求------------------------------------2
二、存储结构------------------------------------2
三、设计思想------------------------------------2
1、设计包含的几个部分-----------------------2
2、流程图-----------------------------------3
四、详细设计------------------------------------4
五、算法复杂度分析------------------------------8
六、显示结果------------------------------------9
七、心得体会------------------------------------11
八、附录:源程序代码----------------------------11
一、设计要求
赫夫曼树
任务 :建立建立最优二叉树函数
要求:可以建立函数输入二叉树,实现赫夫曼树的编码和译码系统,重复地显示并处理编码/解码功能,直到选择退出为止。typedet struct {
char ch; // 存放编码的字符
char bits[N+1]; // 存放编码位串
int len; // 编码的长度
}CodeNode; // 编码结构体类型
③ 代码文件的译码
译码的基本思想是:读文件中编码,并与原先生成的赫夫曼编码表比较,遇到相等时,即取出其对应的字符存入一个新串中。
(2)其主要流程图如图所示。
四、详细设计
(1)①赫夫曼树的存储结构描述为:
#define N 50 // 叶子结点数
#define M 2*N-1 // 赫夫曼树中结点总数
typedef struct {
int weight; // 叶子结点的权值
int lchild, rchild, parent; // 左右孩子及双亲指针
}HTNode; // 树中结点类型
typedef HTNode HuffmanTree[M+1];
②哈弗曼树的算法
void CreateHT(HTNode ht[],int n) //调用输入的数组ht[],和节点数n
{
int i,k,lnode,rnode;
int min1,min2;
for (i=0;i2*n-1;i++)
ht[i].parent=ht[i].lchild=ht[i].rchild=-1; //所有结点的相关域置初值-1
for (i=n;i2*n-1;i++) //构造哈夫曼树
{
min1=min2=32767; //int的范围是-32768—32767
lnode=rnode=-1; //lnode和rnode记录最小权值的两个结点位置
for (k=0;k=i-1;k++)
{
if (ht[k].parent==-1) //只在尚未构造二叉树的结点中查找
{
if (ht[k].weightmin1) //若权值小于最小的左节点的权值
{
min2=min1;rnode=lnode;
min1=ht[k].weight;lnode=k;
}
else if (ht[k].weightmin2)
{
min2=ht[k].weight;rnode=k;
}
}
}
ht[lnode].parent=i;ht[rnode].parent=i; //两个最小节点的父节点是i
ht[i].weight=ht[lnode].weight+ht[rnode].weight;
您可能关注的文档
- 数学实验第二讲_绘图.ppt
- 数字逻辑chapter3-1.ppt
- 数学建模_多元统计分析引论.ppt
- 数学建模模型与应用.doc
- 数学建模常用的Matlab绘图总结.docx
- 数学建模首选软件Mathematica画图专讲(很全).ppt
- 数学:第十四章《一次函数》复习课件(人教新课标八年级上).ppt
- 数据与计算机通信05-SignalEncodingTechniques 2014.ppt
- 数据与计算机通信07-DataLinkControl.ppt
- 数学建模常用软件介绍.ppt
- 第18讲 第17课 西晋的短暂统一和北方各族的内迁.docx
- 第15讲 第14课 沟通中外文明的“丝绸之路”.docx
- 第13课时 中东 欧洲西部.doc
- 第17讲 第16 课三国鼎立.docx
- 第17讲 第16课 三国鼎立 带解析.docx
- 2024_2025年新教材高中历史课时检测9近代西方的法律与教化含解析新人教版选择性必修1.doc
- 2024_2025学年高二数学下学期期末备考试卷文含解析.docx
- 山西版2024高考政治一轮复习第二单元生产劳动与经营第5课时企业与劳动者教案.docx
- 第16讲 第15课 两汉的科技和文化 带解析.docx
- 第13课 宋元时期的科技与中外交通.docx
文档评论(0)