我目前正在研究一个程序,该程序可以从学生数据库创建哈希表。在尝试运行程序时,我遇到了一个异常,该异常表示读取访问冲突。我不确定为什么会这样。
我尝试在代码的某些区域添加模数,因为我认为问题在于我返回的值对于哈希表而言太大。遗憾的是这没有用,谢谢您的帮助
以下是导致抛出异常的函数:
是空函数:
bool isEmpty() const {
return(type == emptySlot);
}
插入功能:
bool HashTable::insert(int key, int value, int& collisions)
{
int hashedArrayIndex = ::hash(key);
int homeArrayIndex = hashedArrayIndex % MAXHASH;
int takenIndex = 0;
int tmepIndex = 0;
while (!takenIndex)
{
if (array[hashedArrayIndex].isEmpty() ||
array[hashedArrayIndex].isTombstone())
{
array[hashedArrayIndex] = Slot(key, value);
count++;
return true;
return collisions;
}
else if (array[hashedArrayIndex].isNormal())
{
if (array[hashedArrayIndex].getKey() == key)
{
return false;
}
else
{
collisions++;
hashedArrayIndex = (homeArrayIndex + probingArray[tmepIndex]) % MAXHASH;
tmepIndex++;
}
}
}
return false;
}
我的哈希表构造函数:
HashTable::HashTable()
{
float count = 0;
Slot array[arraySize];
const int arraySize = MAXHASH;
int probingArray[arraySize];
for (int i = 0; i < arraySize; i++)
{
probingArray[i] = i;
}
}