课程设计样板.doc.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程设计样板.doc

数据库原理及Oracle开发课程设计 题 目 系 (部) 班 级 姓 名 学 号 指导教师 2017年 6 月23日 数据库原理及Oracle开发 课程设计任务书 一、设计题目、内容及要求 题目: (自填) 内容:1、分析与流程设计; 2、相关程序设计、实现、调试; 3、课程设计总结报告。 要求: (自填) 二、要求的设计成果(课程设计说明书、设计实物、图纸等) 1、课程设计总结报告 2、数据库备份文件 三、进程安排 设计工作4学时 实现与调试16学时 课程设计总结报告8学时 四、主要参考资料 (自填,要和论文中的一致,不少于5个) 指导教师(签名): 系主任(签名): 基于Huffman算法的编码与译码技术的探究 张 苗 安康学院 计算机科学与技术08级 陕西省 安康市 725000 摘要:本文采用了哈弗曼算法,通过对编码与译码技术的探究,利用C语言实现了从文件中读取数据,并进行编码和译码的功能,同时克服了C语言下数组长度的有限性。经实验验证,效果良好。 关键字:哈夫曼树;哈夫曼编码;数据的带权路径长度;译码 引言 数据编码技术在计算机数字通信中一直占据着重要的地位。而在数据通信过程中往往存在很多问题:每次对数据编码量有限,传递的数据编码的长度和数据译码容易产生二义性等。以上问题使得数据编码技术的优劣在很大程度上影响着通信质量。 在信息编码领域中,哈弗曼树即最优二叉树的应用十分广泛,其权值被赋为某个符号出现的频率,利用哈夫曼树对每个数据进行不等长编码,频率越高的数据其编码越短,使得数据带权路径长度WPL最小,这样就保证了整个电文的编码长度达到最短。“哈夫曼编码是一种一致性编码路径和路径长度 在一棵树中,从一个结点往下可以达到的孩子或子孙结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。 结点的权及带权路径长度 若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的权的乘积。 树的带权路径长度 树的带权路径长度规定为所有叶子结点的带权路径长度之和,记为WPL哈夫曼编码(Huffman Coding)是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种有时称之为最佳编码,一般就叫作Huffman编码。 createht(struct htnode ht[],int n)函数实现。 3.2 哈弗曼编码算法 3.2.1 对每个叶结点进行编码 根据所建的哈夫曼树,则需要编码的字符集合即叶子结点,利用回溯法,对于每个叶结点,都是从叶结点出发,向上回溯至根结点为止。上溯时走左分支则生成代码0,走右分支则生成代码1.由于生成的编码与要求的编码反序,将生成的第i个字符的代码,从后往前依次存放在一个数组hcd[i].cd[n]中,指针start指示编码在数组中的位置(start初始时指示数组的结束位置,编码结束后start指向哈弗曼编码最开始字符)。由于叶子结点总数为n,则不等长编码的长度不会超过n,故在每一叶结点的编码末加一标识符“#”,以便于对字符数据进行译码。 该功能由createhcode(struct htnode ht[],struct hcode hcd[],int n)函数实现。 3.2.2 对文件中所有字符数据进行编码 (1)从文件1(源文件)中读取一定长度的字符放在数组S2[]中。 (2)将S2[]中的字符依次和3.1.2所建哈弗曼树中的叶结点进行比较,若相同,则将相同字符的相应编码写入数组str[]中,直到S2[]中所有字符均被编码,并将其编码写入文件2(编码文件)中。 (3)重复(1)和(2),直到文件1(源文件)中所有字符均被编码并写入文件2(编码文件)。 该功能由函数encode(struct htnode ht[],struct hcode hcd[],char s2[],char str[])实行。 3.3哈弗曼译码算法 (1)从文件2(编码文件)中读取一定长度的字符编码。 (2)将读取的字符编码逐个与3.2.1中叶子结点的编码进行比较,找到与其相同的编码的叶子结点,将这些叶子结点的字符写入文件3(译码文件)。 (3)重复(1)和(2),直到文件2中的所有编码均被译为相对

文档评论(0)

hhuiws1482 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档