赞
踩
哈希表几种方法:
size_t BKDRHash(const char* str) //字符串哈希算法
{
register size_t hash = 0;
while(*str)
{
hash = hash*131 + *str;
++str;
}
return hash;
}
处理哈希冲突的闭散列方法:
闭散列:
检测当前地址的下一个地址是否可以插入,如果可以的话,就存在当前位置的下一个地址,否则,继续向下一个地址寻找,地址++
通过二次探测的方法,取当前地址加上i^2,可以取到的新的地址就会稍微分散开。
pair<Node*, bool> Insert(const K& key, const V& value)
{
_CheckCapacity();
size_t index = HashFunc(key);
//线性探测
/*while(_tables[index]._status == EXIST )
{
if(_tables[index]._key == key)
return make_pair((Node*)NULL,false);
++index;
if(index == _tables.size())
{
index = 0;
}
}
*/
//二次探测
size_t i = 0;
size_t first = index;
while (_tables[index]._status == EXIST)
{
if (_tables[
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。