Hash 查找算法设计:输入 10 个 [0, 99] 之间的整数,构造 hash 表。相关要求如下:
- 采用除留余数法构造哈希函数
- 处理冲突的方法是线性探测法
- 测试数据必须有产生冲突的情况
运行示例:
程序源码:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int hashTable[10];
// 输入 10 个 [0,99] 之间的整数
for (int i = 1; i <= 10; i++)
{
cout << "请输入第" << i << "个数:";
int number;
cin >> number;
// 判断输入的数据是否在 [0,99] 范围内
if (!(number >= 0 && number <= 99))
{
cout << "您输入的数据有误,请重新输入!!!" << endl;
i--;
continue;
}
int remainder = number % 10;
while (true)
{
if (!(hashTable[remainder] <= 99 && hashTable[remainder] >= 0))
{
// 除留余数法构造哈希函数
hashTable[remainder] = number;
break;
}
else if (++remainder == 10)
{
// 线性探测法处理冲突
remainder = 0;
}
}
}
cout << "\n生成的哈希表如下:" << endl;
for (int i = 0; i < 10; i++)
{
cout << setw(4) << i << "|";
}
cout << "\n -------------------------------------------------" << endl;
for (int i = 0; i < 10; i++)
{
cout << setw(4) << hashTable[i] << "|";
}
return 0;
}