如果索引不是整数,我们如何在c ++中插入哈希表

问题描述 投票:-2回答:1

如果我有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;        
}

让我们说如果我们拥有的数据是字符串值,我们如何实现哈希?

c++ hash
1个回答
0
投票

正如名称回声一样,哈希表需要一个哈希函数,即将[0,4]中的整数与您的密钥相关联的函数,无论其类型如何。散列函数应该使碰撞最小化,因此它不应该对值进行聚类。

对于字符串,通常使用类似CRC的转换来获取整数。

© www.soinside.com 2019 - 2024. All rights reserved.