没有合适的资源?快使用搜索试试~ 我知道了~
基于哈希表的姓名首字母查找.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 177 浏览量
2021-12-17
19:05:51
上传
评论 1
收藏 24KB DOCX 举报
温馨提示
任务。针对某个集体(比如你所在的班级)中的“姓名”设计一个哈希表,使得平均查找 长度不超过R,完成相应的建表和查表程序。 要求:假设人名为中国人姓名的汉语拼音形式。待填入哈希表的人名共有 30个,取平 均查找长度的上限为 2. 哈希函数用除留余数法构造,用伪随机探测再散列法和拉链法处理
资源推荐
资源详情
资源评论
//
// Created by
马超金
on 2021/12/15.
//
#include<stdio.h>
#include<string.h>
char hashmap1[26*26*26+26*26+26+3000][12];//(
名字第一个字母
-'a')*26*26+(
名字倒
数第二个字母
-'a')*26+(
名字倒数第一个字母
-'a')
可以将任何顺序的三个字母区分开
char hashmap2[10000][12];
char hashmap3[3000][12];
char hashmap4[3000][12];
//
直接取址法
//(
名字第一个字母
-'a')*26*26+(
名字倒数第二个字母
-'a')*26+(
名字倒数第一个字母
-'a')
可以将
任何顺序的三个字母区分开
void myHash1(char *s)
{
if(strlen(s)<3 || strlen(s)>10){
printf("直接取址法存入失败!");
return;
}
memset(hashmap1,0,sizeof(hashmap1));//
将
hashmap1
字符串数组中所有的字符串置
为空
char a[12];
strcpy(a,s);
int k = (a[0]-'a')*26*26 + (a[strlen(a)-2]-'a')*26 + (a[strlen(a)-1]-'a');
int index = k;
while(hashmap1[index][0]!='