如果我有4个数据,如1,2,3,4,并且哈希表大小为5,那么我们可以根据索引插入它,并使用下面的哈希函数根据索引搜索项目。
h(x)= x%5
插入功能:
void insert(int key,int data) {
struct DataItem *item = (struct DataItem*) malloc(sizeof(struct DataItem));
item->data = data;
item->key = key;
//get the hash
int hashIndex = hashCode(key);
//move in array until an empty or deleted cell
while(hashArray[hashIndex] != NULL && hashArray[hashIndex]->key != -1) {
//go to next cell
++hashIndex;
//wrap around the table
hashIndex %= SIZE;
}
hashArray[hashIndex] = item;
}
让我们说如果我们拥有的数据是字符串值,我们如何实现哈希?
正如名称回声一样,哈希表需要一个哈希函数,即将[0,4]中的整数与您的密钥相关联的函数,无论其类型如何。散列函数应该使碰撞最小化,因此它不应该对值进行聚类。
对于字符串,通常使用类似CRC的转换来获取整数。