双哈希函数不起作用(代码提供)

时间:2018-03-31 20:50:43

标签: c++

我正在读取一个包含127个键的文件。我需要使用双散列将密钥插入哈希表。所以这是我的去处,这里我取一个整数值(键)。如果该哈希表的索引为null,则插入密钥,否则如果存在冲突。我使用这个哈希函数g(k)= TABLE_SIZE - (key%TABLE_SIZE)。使用无限循环,以便如果使用g(k)函数发生碰撞,则执行2 * g(k),3 * g(k)等等。我不确定我做错了什么,因为当我在Putty上运行此代码时,我得到了一个"分段错误(Core Dumped)"。我在这里想念的是什么?

void doubleHashing(int key){
     index = key % size;
     int iterations = 0;
      for(;;){
        if(hashTable[index] == '\0'){
              hashTable[index] = key;
              break;
        }
        else if(hashTable[index] != '\0'){
             iterations++;
             index = (size - (key % size));
             index *= iterations;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我首先怀疑你的hashTable未正确初始化为0,或者你有足够的碰撞使你的碰撞避免超过你的界限。