经典数据结构之哈希(open address)

本文探讨了哈希表在存储规模与快速寻址之间的平衡,并重点介绍了开放地址法处理哈希碰撞的方法,详细阐述了insert实现过程。
摘要由CSDN通过智能技术生成


哈希表的意义在于保证一定存储规模的情况下实现快速寻址。这对于自然界的大部分数据是极有意义的。传统的哈希表碰撞的处理方式:开放地址法和链接法,本文是开放地址法。

.h 文件

#include <cassert>
#include <iostream>
template<typename K, typename E = int> 
class CHashTable{
private:
	// members;
    bool* m_pEmpty;
	E* m_pArray;
	size_t m_nSize;
public:
	// constructors;
	CHashTable(size_t size = 100);
	~CHashTable();
	// methods;
    CHashTable& mInsert(const K& key, const E& elem);
    bool mFind(const K& key, const E& elem);
private:
	int _mHashFunc(const K& key);
};

template<typename K, typename E>
CHashTable<K,E>::CHashTable(size_t size):
	m_nSize(size){
    // initialize the m_pEmpty
    assert(m_nSize > 0);
    m_pEmpty = new bool[size];
	for(int i = 0; i < size; i ++)
		m_pEmpty[i] = true;
    m_pArray = new E[size];
}

template<typename K, typename E>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值