编程日志5.17
哈希表的C语言结构
后面习题用的C语言
#include<stdio.h>
//哈希表定义
#define maxHashSize 100000//表示哈希表的数组长度,要开的足够大,否则会导致算法死循环
#define eleType int//表示哈希表中键的类型,一般是整数类型
#define empty -191028223//empty代表哈希表中元素为空时的值,这个值必须是一个非常随机,且不会在给定数据范围内的数
int hashArray[maxHashSize];//定义一个整数类型的哈希表hashArray,其实就是一个maxHashSize个整数的数组
//实现一个哈希函数hashFunc,直接采用取模,如果取模出来的结果是负数,那么再加上哈希表的长度即可,这样返回的x就是一个能够映射到哈希数组中的下标了
int hashFunc(eleType val) {
int x = val % maxHashSize;
if (x < 0) x += maxHashSize;
return x;
}
//哈希表的创建
//只需遍历哈希数组,并且把所有元素都设置为空即可。
void hashInit() {
for (int i = 0; i < maxHashSize; ++i) {
hashArray[i] = empty;
}
}