(H)哈希散列问题.doc

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

实验七 哈希散列问题 需求分析 (1) 根据输入建立图书名称表,采用散列表实现该表,散列函数选用BKDE 字符串哈希。 (2)数据的输入输出格式: 输入分为两部分 第一部分,第一行是行数n,n = 5000。余下n行,每行一个字符串。表示已存在的图书记录。 第二部分,第一行是行数m,m = 1000。余下m行,每行一个字符串。表示要查询的图书记录。 输出: 输出为m行,如果被查的记录存在,则输出YES,如果不存在则输出NO。 概要设计 抽象数据类型 算法思想 基于的基本操作来实现问题 输入分为两部分 第一部分,第一行是行数n,n = 5000。余下n行,每行一个字符串。表示已存在的图书记录。 第二部分,第一行是行数m,m = 1000。余下m行,每行一个字符串。表示要查询的图书记录。 输出模块:输出为m行,如果被查的记录存在,则输出YES,如果不存在则输出NO。 。 算法流程 请输入要存储的书籍数目://提示 等待输入 输出 //提示”YES”或“NO” 输入输出格式 输入: 4 a ans and hellocpp 9 a b an as ans and ande hellocbb hellocpp 输出: YES NO NO NO YES YES NO NO YES: 测试结果 五、#includeiostream #includestring using namespace std; //定义哈希散列函数 unsigned int hash_BKDE(char *str) { unsigned int seed = 131; unsigned int hash = 0; while (*str) { hash = hash * seed + (*str++); } return (hash 0x7FFFFFFF)%5000; } //在主程序中存储元素并查找元素 int main() { int n; int i; int hash_num; //一个5000行100列的二维字符数组,保存存入的书籍名 char library[5000][100]; for(i=0;i5000;i++) strcpy(library[i],NULL); cout请输入要存储的书籍数目:; cinn; for(i=0;in;i++){ char name[100]; //输入一个字符串 cinname; //根据哈希函数算出映射值 hash_num=hash_BKDE(name); //如果该位置为空,则直接存入 //coutstrcmp(library[hash_num],NULL)endl; if(!strcmp(library[hash_num],NULL)) strcpy(library[hash_num],name); //否则找一个空的位置 else{ while(hash_num5000strcmp(library[++hash_num],NULL)) {cout(library[++hash_num]!=NULL)endl;}; //如果超出数组范围,则存储失败 if(hash_num==5000) cout存储失败endl; else {strcpy(library[hash_num],name);} } } //查找 //一个1000行的100列的二维数组,用来存储要查询的书籍名 char search[1000][100]; cout请输入要查找书籍的数目:; cinn; for(i=0;in;i++) { //输入一个字符串 cinsearch[i]; } //在library中查找 cout输出:endl; for(i=0;in;i++) { //获取映射值 hash_num=hash_BKDE(search[i]); //如果在library中为空,则为no if(!strcmp(library[hash_num],NULL)) coutNOendl; else {//如果不为空,判断是否相等 if(!strcmp(library[hash_num],search[i])) coutYESendl;

文档评论(0)

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

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

1亿VIP精品文档

相关文档