哈希表设计与实现.docVIP

  • 19
  • 0
  • 约1.19万字
  • 约 26页
  • 2021-12-04 发布于山东
  • 举报
(整理)哈希表的设计与实现 (整理)哈希表的设计与实现 PAGE / NUMPAGES (整理)哈希表的设计与实现 哈希表的设计与实现 摘 要 哈希表的设计与实现是用 Visual C++ 6.0 编写的能够实现数据的储存,更新与查找的程序。它能够方便的进行基本数据信息的输入(如 : 姓名、电话、地点等),查问(按姓名查问 . 按电话号查问),删除(运用姓名删除),增添新的数据等。易于管理员进行管理。本设计使用 Visual C++ 6.0 开发工具利用其供给的各样面向对象的开发工具将数据信息定义在构造体中,运用类实现了对数据不一样信息的操作功能。 要点字: 哈希表 ; Visual C++ 6.0; 地点 目 录 1、题目剖析 . 3 2、设计思路 . 3 2.1 问题描绘 3 2.2 基本要求 3 2.3 数据构造 3 3、设计思路 . 4 4、测试的实验结果和测试过程 . 11 4.1 详尽设计 11 4.2 屏幕截图 11 4.3 问题剖析: 13 5、课程设计领会及问题剖析 . 13 6、参照文件 . 14 7、源程序清单 . 14 1、题目剖析 在21世纪信息时代里, 各个机构公司都需要办理一些宏大的重要的数据, 而这些数据既需要随时查找还需要随时纪录新的数据。 这工作量无疑是巨大, 假如用人力去达成,不单效率底 ` ,易犯错,并且其余各个方面都遇到必定的限制,如时间资源等。 针对这类状况, 应用哈希表来规范化管理这些数据是一个既明知又科学选折。它不只好有效的正确的储存大批数据, 还能够依据需要不停的更新与插入新的数据。 2、设计思路 2.1 问题描绘 实现本程序需要解决以下几个问题: (1) 怎样设计一个构造体数组使该数组中每个元素包括电话号码、用户 名、地点。 (2) 怎样分别以电话号码和用户名为要点字成立哈希表。 (3) 怎样利用线性探测再散列法解决矛盾。 (4) 怎样实现用哈希法查找并显示给定电话号码的记录。 (5) 怎样查找并显示给定用户的记录。 2.2 基本要求 (哈希表的设计与实现的问题)设计哈希表实现电话号码查问系统。设计程序达成以下要求:( 1)、设每个记录有以下数据项:电话号码、用户名、地点; 2)、从键盘输入各记录, 分别以电话号码和用户名为要点字成立哈希表; ( 3)、采纳再哈希法解决矛盾( 4)、查找并显示给定电话号码的记录; ( 5)、查找并显示给定用户的记录。要达成以上要求,设计哈希表实现电话号码查问系统。 2.3 数据构造 本设计波及到的数据构造为:哈希表。要求输入电话号码、用户名、地点三个信息,并要求分别以电话号码和用户名为要点字进行查找, 所以本问题要用到两个哈希函数,进行哈希查找。 typedef struct { char name[20];// 名字 char num[20];// 电话号码 char add[30];// 地点 }Record; Record Inf[M];// 协助数组 Record H[M];// 哈希表 3、设计思路 主要算法的流程图以下: 1、创立协助数组流程图: 开始 初始化哈希表 选择 Y/N 往协助数组输入元素 N 结束 结束并返回数组元素总数 2、以姓名为要点字的哈希函数流程图: 开始 取整形数据 0 赋给 a i 从 0 开始取 num[i]!= ’\0’ a=a+(int)(name[i]) a=a%29 结束 3、以姓名为要点字创立哈希表流程图: 开始 j 从 0 开始 计算以姓名为要点字的 哈希地点 key if(strcmp(H[key].name, NULLKEY)==0) 将协助数组中的元 素存入哈希表 结束  i++ else key++ 4、以电话号码为要点字的哈希函数流程图: 开始 取整形数据 0 赋给 b i 从 0 开始取 num[i]!= ’\0’ b=b+(int)(name[i]) b=b%29 结束 5、以电话号码为要点字创立哈希表流程图: 开始 j 从 0 开始 计算以电话号码为要点 字的哈希地点 key if(strcmp(H[key].num,N ULLKEY)==0) 将协助数组中的元 素存入哈希表 结束  i++ else key++ 6、以姓名为要点字的哈希表按姓名查找函数流程图: 开始 调用 Hash_name while(strcmp(H[key].name,name)!=0) key++ if(strcmp(H[key].name,NULLKEY)==0 ) 查找名字不存在 return(key); 结束 7、以电话号码为要点字的哈希表按号码查找函数流程图: 开始 调用 Hash_num while(strcmp(H[key].num,num)!=0) key++ if(strcmp(H

文档评论(0)

1亿VIP精品文档

相关文档