题目描述
定义哈希函数为H(key) = key%11,输入表长(大于、等于11)。输入关键字集合,用线性探测再散列构建哈希表,并查找给定关键字。
–程序要求–
① 若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio;程序中若include多过一个头文件,不看代码,作0分处理
② 不允许使用第三方对象或函数实现本题的要求
输入
测试次数t
每组测试数据为:
哈希表长m、关键字个数n
n个关键字
查找次数k
k个待查关键字
输出
构造的哈希表信息,数组中没有关键字的位置输出NULL
对k个待查关键字,分别输出:0或1(0—不成功,1—成功)、比较次数、查找成功的位置(从1开始)
样例输入
1
12 10
22 19 21 8 9 30 33 4 15 14
4
22
56
30
17
样例输出
22 30 33 14 4 15 NULL NULL 19 8 21 9
1 1 1
0 6
1 6 2
0 1
代码示例(语言C++)
构建HashTable类来封装实现,也可以不用类实现。
#include <iostream>
using namespace std;
#define INITIALIZE -63798
class HashTable
{
private:
int size; // 表长
int* hashTable; // 哈希表,用于存值
public:
HashTable();
~HashTable();
int hash(int num);
void outPut();
void searchValue(int t);
};
HashTable::HashTable()