今天又完成了一道编程题。此题是用线性探测再散列解决冲突的哈希表设计题。
完成后还是有些困惑,发现自己对算法分析不是特理解。例如,“平均查找长度的上限为2”就不是特别理解。
虽然算法写完了,但是性能不知道有没有题中所说的那样“平均查找长度的上限为2”呢?
希望懂的GG,MM帮忙看下~哦
/*
作者:徐**
日期:12.29 918
Version:v1.0
作用:为班级30个人设计一个Hash表,要求
用除留余数数法构造Hash表,用线性探测再
散列法处理冲突,平均查找长度的上限为2
*/
#include <stdio.h>
#include <string.h>
#define MAX 50
#define STU_MAXNUM 30
#define NULLKEY -1
typedef int KeyType;
typedef struct
{
KeyType key_num;
char name[30];
}RecordType;
typedef RecordType HashTable[MAX];
void Init(HashTable ht)
{
int i;
for(i = 0; i < MAX; i++)
{
ht[i].key_num = NULLKEY;
}
}
int Hash(int key)
{