急求 数据结构哈希表设计

来源:百度知道 编辑:UC知道 时间:2024/09/13 09:13:41
针对班级成员以姓名为关键字设计一个哈希表,是的平均查找长度不超过R
要求:
1、自行设计至少三种哈希函数
2、每种哈希函数采用线性探测在散列和伪随机探测在散列进行冲突处理
3、针对班级成员姓名给出每种哈希函数的平均查找长度

如果做出来,我感激不尽!
如果做出来,另外加分!

1. 计算出字符串的三个哈希值 (一个用来确定位置,另外两个用来校验)
2. 察看哈希表中的这个位置
3. 哈希表中这个位置为空吗?假如为空,则肯定该字符串不存在,返回
4. 假如存在,则检查其他两个哈希值是否也匹配,假如匹配,则表示找到了该字符串,返回
5. 移到下一个位置,假如已经越界,则表示没有找到,返回
6. 看看是不是又回到了原来的位置,假如是,则返回没找到
7. 回到3

怎么样,很简单的算法吧,但确实是天才的idea, 其实最优秀的算法往往是简单有效的算法。

#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#define L 50 /*定义哈希表长*/
#define M 47 /*定义p值*/
#define N 30 /*定义名单长*/
char z[22];
struct old{char *name;char *py;int k;};
struct old oldlist[L];/*原始表*/
struct hterm
{ char *name;char *py;
int k;int si;
};
struct hterm hlist[L];/*哈希表*/
int i,adr,sum,d;
char ch1;
float average;
/**********************************/
void chash()
{for (i=0;i<L;i++)
{hlist[i].name="";
hlist[i].py="";
hlist[i].k=0;
hlist[i].si=0;
};
for (i=0;i<N;i++)
{ sum=