开散列
开散列概念 开散列法又叫链地址法(拉链法)。首先计算映射位置,具有相同地映射关系的值归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表中。
哈希表开散列的模拟实现
准备工作
跟闭散列一样,只是二者在实现的时候,用的存储结构不同
我们写在一个自定义类域 Bucket 里面
节点结构体
namespace Bucket
{
template<class K,class V>
struct HashNode
{
pair<K, V> _kv;
HashNode<K, V>* _next;
HashNode(const pair<K,V>& kv)
:_kv(kv)
,_next(nullptr)
{}
};
}
哈希表类
template<class K,class V,class Hash=HashFunc<K>>
class HashTable
{
typedef HashNode<K, V> Node;
public:
~HashTable();
bool Insert(const pair<K,V>& kv);
Node* find(const K& key);
bool Erase(const K& key);