在这里插入代码片#pragma once
template<class T>
class HashTable
{
class HashNode
{
public:
T* elem;
int count;
~HashNode() { if (elem)delete[] elem; }
}H;
public:
HashTable(const int _count);
void insertHash(const T key);
bool searchHash(const T key);
private:
T hash(const T key);
};
template<class T>
HashTable<T>::HashTable(const int _count)
{
H.count = _count;
H.elem = new T[H.count];
for (int i = 0;i < H.count;++i)
H.elem[i] = -111;
}
template<class T>
void HashTable<T>::insertHash(const T key)
{
int addr = hash(key);
while (H.elem[addr] != -111)
addr = (addr + 1) % 12;
H.elem[addr] = key;
}
template<class T>
bool HashTable<T>::searchHash(const T key)
{
int addr = hash(key);
while (H.elem[addr] != key)
{
addr = (addr + 1) % 10;
if (H.elem[addr] == -111 || addr == hash(key))
return false;
}
return true;
}
template<class T>
T HashTable<T>::hash(const T key)
{
return key % 12;
}```
查找之散列表(开放定址法)
最新推荐文章于 2022-11-27 12:41:50 发布