- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程名称:数据结构
XXXXXXXX
本科学生课程设计(论文)
题 目 哈希表的设计与实现
姓 名 XXX
学 号 XXXXXXXXXXXX
学 部 计算机科学与技术
专业、年级 计算机科学与技术 大二
指 导 教 师 XX
2010 年 11月
摘 要
随着信息技术的发展,关于各种程序中的数据结构也是层出不穷,对于项目某一方面的计算或者是某一方面的研究,出现了专门的数据结构,哈希表就是其中之一,哈希表作为另类的一种数据结构,其作用也是区别于其它同类的数据结构的,它是由两部分组成的:键(key)和值,通过键可以迅速的查找到你需要的值。常见的构造哈希函数的方法有直接定址法 除留余数法 平方取中法 数字分析法等。一般创建哈希表时可能会出现很多的冲突,常用的处理冲突的方法为开放定址法 再哈希法 链地址法 建立一个公共溢出区。
关键词: 数据结构;哈希表;键(key);
哈希表的设计与实现 第1章 前 言
第 PAGE 23 页
目 录
TOC \o 1-3 \u 第1章 前言与系统实现 2
1.1前言 2
1.2系统实现 3
1.2.1 开发环境 3
1.2.2 Visual C++环境的安装 3
第2章 系统功能分析 4
2.1 系统功能需求分析 4
2.2 任务定义 4
第3章 总体设计 5
3.1系统数据结构 5
3.2主要算法流程图 6
3.2.1 以姓名为关键字的CreateHashList()函数流程图 6
3.2.2 哈希表查找算法流程图 7
3.2.3主程序流程图 8
第4章 详细设计和编码 9
4.1节点的建立 9
4.2 对哈希函数的定义 9
4.3 创建哈希表算法、代码如下所示: 10
4.3.1 算法 10
4.3.2代码 10
4.4哈希查找 11
4.5显示哈希表 14
4.6主菜单设计 16
4.7 主函数设计 16
第5章 程序运行测试 19
5.1程序主界面 19
5.2哈希表初始化 19
5.3按姓名查找记录 21
5.4显示哈希表全部记录 22
总结 23
参考文献 24
前言与系统实现
1.1前言
在信息化时代的今天,计算机技术已经是发展到一个很可观的地步了,特别是面向窗口的操作系统的出现,使得程序设计更加的容易了。在过去计算机内存容量小,CPU计算速度慢,关于程序设计中的数据结构也因此提出来很多的关于解决这方面的问题。哈希表就是其中之一,哈希表是一个由关键字与值组成的特殊的一种数据结构。它的出现主要是为了解决在结构中查找记录时需要进行一系列和关键字的比较,这一类查找方法是建立在“比较”的基础上的,在顺序等的查找中,查找的效率是依赖于查找过程中所比较的次数。
理想的情况是希望不经过任何的比较一次存取便能得到所查记录,那就必须在记录的存储位置和它的关键字之间建立一个确定的对应关系,使得每个关键字和结构中一个唯一的存储位置相对应。因而在查找时只要根据这个对应关系找到给定的值的像。若结构中存在关键字和该值相等的记录,则所要查找的数就必定就是这个所查找到的记录。
哈希函数是建立哈希表的一个重要的成员,它的构造方法分为以下几种:
直接定址法、数字分析法、平方取中法、折叠法、除留余数法、随机数法。
本程序中主要用的是除余取留法,除留取余法主要是取关键字被某个不大于哈希表表长m的数p出后所得余数为哈希地址即:H(key)=key MOD p, p=m,这是一种最简单,也是一种最常用的构造函数的方法,它不仅可以对关键字直接取模,也可在折叠、平方中等运算之后取模。
在哈希表的建立中,很容易出现同义词,这些同义词的出现也导致了建立哈希表时冲突的出现,如果不解决这些冲突那么建立好的哈希表与预料的哈希表不同。关于处理冲突的方法主要有:开放定址法、再哈希法、链地址法。本程序中主要用的就是链地址法莱解决冲突的。
1.2系统实现
本程序是在Vc++6.0环境下编写 测试运行的。
1.2.1 开发环境
表1-1列出了系统硬件配置,表6-2列出了系统软件配置。
设备名称
配置
CPU
E1200 2.6GHz
内存
128MB
硬盘
40GB
表1.1 组
文档评论(0)