#include
using namespace std; #define m 13//哈希表长度 int Hash(int key) { int H = key % m;//哈希函数 return H; } void InitHashTable(int data[]) { for (int i = 0; i < m; i++)//初始化数组为-1 data[i] = -1; for (int i = 0; i < 10; i++) { int n = rand() % 100;//随机值 int x = Hash(n);//随机值的哈希值同时也是数组下标 if (data[x]!=-1)//位置被占 { x = (x + 1) % m;//线性探测下一个位置 while (data[x]!=-1 && x != Hash(n)) x = (x + 1) % m; } data[x] = n; cout << n << ":" << x << "\t"; } } int SearchHash(int* data, int key) { int H = Hash(key); if (data[H]==-1)//如果未重新赋值 return-1; else if (data[H] == key)//查找成功 return H; else { for (int i=1; i
> key) { if (SearchHash(data, key) == -1) cout << "查找失败"; else cout << endl << "查找成功数据下标为:" << SearchHash(data, key)<
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229401.html原文链接:https://javaforall.net
