本论文是一篇数据结构有关毕业论文网,关于计算机专业综合知识科目,计算机专业课程高等数学相关学年毕业论文范文。免费优秀的关于数据结构及课程设计及计算机方面论文范文资料,适合数据结构论文写作的大学硕士及本科毕业论文开题报告范文和学术职称论文参考文献下载。
课程设计说明书
题目:哈夫曼编码/译码器
院系:计算机系
专业班级:计算机04-2班
学号:200413466
学生姓名:王乾龙
指导教师:
2007年1月14日
安徽理工大学课程设计(论文)任务书
计算机科学与工程院系计算机软件教研室
学号200413466学生姓名王乾龙专业(班级)计算机04-2设计题目哈夫曼编码/译码器设
计
技
术
参
数
系统平台WindowsXP
开发工具VC++
设
计
要
求选择某种可视化编程语言编写出人机交互界面.
执行某种遍历算法时可人工输入数字,也可系统自己产生随机数据排序.
执行结果正确无误.
综合运用多种编程技术.工
作
量1,说明书说明文字不少于2000字.
2,编程代码不少于300行.工
作
计
划
第1天:先和小组成员一起讨论要做的设计,并分工找相关资料.
这篇论文来源 http://www.sxsky.net/xie/070833193.html
第2天:各个成员开始用VC++语言编写相关部分的函数.
第3天:完成源程序的设计,并实现代码间的连接,运行程序.
第4天:组员认真讨论以改进算法实现,完善操作.
第5天:演示课程设计结果,听取指导教师的意见与建议.参
考
资
料《数据结构》(第二版)严蔚敏吴伟民清华大学出版社
《数据结构题集》(第二版)严蔚敏吴伟民清华大学出版社
《VC++程序设计》朱晴婷黄海鹰陈莲君清华大学出版社
指导教师签字教研室主任签字2007年01月08日
指导教师评语:
成绩:
指导教师:
年月日
安徽理工大学课程设计(论文)成绩评定表
摘 要
随着计算机的普遍应用与日益发展,其应用早已不局限于简单的数值运算,而涉及到问题的分析,数据结构框架的设计以及设计最短路线等复杂的非数值处理和操作.算法与数据结构的学习就是为以后利用计算机资源高效地开发非数值处理的计算机程序打下坚实的理论,方法和技术基础.
算法与数据结构旨在分析研究计算机加工的数据对象的特性,以便选择适当的数据结构和存储结构,从而使建立在其上的解决问题的算法达到最优.
数据结构是在整个计算机科学与技术领域上广泛被使用的术语.它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构.数据结构有逻辑上的数据结构和物理上的数据结构之分.逻辑上的数据结构反映成分数据之间的逻辑关系,而物理上的数据结构反映成分数据在计算机内部的存储安排.数据结构是数据存在的形式.
《数据结构》主要介绍一些最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论.数据结构是介于数学,计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计,数据库,操作系统,编译原理及人工智能等的重要基础,广泛的应用于信息学,系统工程等各种领域.
学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理.通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高.
目录
摘 要4
目录5
一、设计目的5
二、需求分析6
2.1哈夫曼编码/译码器简介6
2.2需求分析6
三、概要设计7
3.1问题分析哈夫曼树的定义7
四、详细设计7
4.1编码函数7
4.2译码函数9
4.3运行结果10
五、调试分析12
六、小结12
参考文献13
/译码器简介
举例说明,先前快速远距离通信的主要手段是电报,即将需传送的文字转换成由二进制的字符组成的字符串.在传送电文时,希望总长尽可能地短,如果对每个字符设计长度不等的编码,且让电文中出现次数较多的字符采用尽可能短的编码,以减少经费.哈夫曼树就是根据此原理设计出来的一种存储结构.
本次要做的哈夫曼编码/译码器的主要功能是:运用二叉树来设计二进制的前缀编码.若给一个文件,先统计文件中每个字符出现的频数,即作为此字符的权值,然后将里面的字符编码成相应的哈夫曼编码,反之,根据哈夫曼译码原理把所给二进制数编译成对应的字符串.
2.2需求分析
(1)编写相应的源代码.
(2)要求能实现编码/译码功能.
(3)演示程序以人机对话的形式进行.每次测试显示正确的结果.
(4)界面友好,易与操作.
概要设计3.1问题分析哈夫曼树的定义
typedefstructHuffmantree
{
charch,/*键值*/
intweight,mark,/*weight为权值,mark为标志域*/
structHuffmantree*parent,*lchild,*rchild,*next,/*结构指针*/
}Hftree,*linktree,
使用链树存储,然后分别调用统计频数函数,排序函数,建立哈夫曼函数,编码函数,译码函数来实现功能.
详细设计4.1编码函数
以下是源程序中实现编码的部分:
voidHuffmancoding(linktreetree)
{
intindex等于0,
char*code,
linktreeptr等于tree,
code等于(char*)malloc(10*sizeof(char)),/*此数组用于统计哈夫曼编码*/
printf("字符以及它的相应权数---------哈夫曼编码\n\n"),
if(ptr等于等于NULL)
{
cout<,<,"哈夫曼树是空的!\n",
exit(0),
}
else
{
while(ptr->,lchild&,&,ptr->,rchild&,&,ptr->,mark等于等于0)
{
while(ptr->,lchild&,&,ptr->,lchild->,mark等于等于0)
{
code[index++]等于'0',
ptr等于ptr->,lchild,
if(!ptr->,lchild&,&,!ptr->,rchild//打印哈夫曼树中的结点
{
ptr->,mark等于1,
code[index]等于'\0',
printf("\tw[%c]等于%d\t\t\t",ptr->,ch,ptr->,weight),
for(index等于0,code[index]!等于'\0',index++)
printf("%c",code[index]),
printf("\n"),,
ptr等于tree,
index等于0,
}
}
if(ptr->,rchild&,&,ptr->,rchild->,mark等于等于0)
{
ptr等于ptr->,rchild,
code[index++]等于'1',
}
if(!ptr->,lchild&,&,!ptr->,rchild)
{
ptr->,mark等于1,
code[index++]等于'\0',
printf("\tw[%c]等于%d\t\t\t",ptr->,ch,ptr->,weight),
for(index等于0,code[index]!等于'\0',index++)
printf("%c",code[index]),
printf("\n"),
ptr等于tree,
index等于0,
}
if(ptr->,lchild->,mark等于等于1&,&,ptr->,rchild->,mark等于等于1)
{
ptr->,mark等于1,
ptr等于tree,
index等于0,
}
}
}
printf("\n"),
free(code),
}
4.2译码
以下函数是源程序中实现译码部分:
voiddecode(linktreetree,charcode[])
{
inti等于0,j等于0,
char*char0_1,
linktreeptr等于tree,
char0_1等于(char*)malloc(10*sizeof(char)),/*此数组用于统计输入的0,1序列*/
printf("哈夫曼编码-----相应字符\n\n"),
for(j等于0,ptr等于tree,code[i]!等于'\0'&,&,ptr-
数据结构有关论文范文素材,与计算机专业综合知识科目,计算机专业课程高等数学相关毕业论文网参考文献资料: