using namespace std;
class Hash
{
int N; // 哈希表的表长
// 指向对应存储下标的指针。
list<int> *table;
public:
Hash(int V);
int hashFunction(int x) {
return (x % N);
}
void insertKey(int x);
void deleteKey(int key);
void displayHash();
};
Hash::Hash(int b)
{
this->N = b;
table = new list<int>[N];
}
void Hash::insertKey(int key)
{
int index = hashFunction(key);
table[index].push_back(key);
}
void Hash::deleteKey(int key)
{
//计算key的哈希值 Hash(key)
int index = hashFunction(key);
//找到 index
list <int> :: iterator i;
for (i = table[index].begin(); i != table[index].end(); i++)
{
if (*i == key){
break;
}
}
//如果找到了对应的key,删除之
if (i != table[index].end())
table[index].erase(i);
}
// 输出哈希表
void Hash::displayHash()
{
for (int i = 0; i < N; i++)
{
cout << i;
for (auto x : table[i])
{
cout << " --> " << x;
}
cout << endl;
}
}
int main()
{
int a[] = {50, 700, 76, 85, 92, 73, 101};
int n = sizeof(a)/sizeof(a[0]);
Hash h(7);
for (int i = 0; i < n; i++){
h.insertKey(a[i]);
}
h.deleteKey(92);
h.displayHash();
return 0;
}
[C++]实现一个哈希表
最新推荐文章于 2024-08-12 13:40:03 发布