您的位置:首页 > 其它

一个通用HASH算法的实现

2012-08-15 22:50 344 查看
由于在项目中需要使用到不同关键字类型(整数,字符串等)来构建hash表,可以使用一个较为通用的hash表操作算法来实现。

1:支持多种关键字类型。

2:支持hash表的动态扩大。

3:通过双向链表链接所有元素,方便hash表的动态扩展和清空。

一个实例:hash值1、3、5、7中存在对应的元素节点,这些元素节点又互相链接并由一个pHead节点指向。

View Code

void ClearHash(hash_t *pHash)
{
int eCount                                   = 0;
elemPtr_t pElem                       = NULL;
elemPtr_t pNextElem               = NULL;

assert(pHash && pHash->pHashTable && pHash->pFirstElem);

eCount = pHash->eCount;
pElem = pHash-> pFirstElem;
while((eCount--) && pElem)
{
pNextElem = pElem->pNext;
free(pElem);
pElem = pNextElem;
}

free(pHash->pHashTable);
pHash->pHashTable = NULL;
pHash-> pFirstElem = NULL;
pHash->eCount = 0;
pHash->bSize = 0;
return;
}


转载请注明原始出处:http://www.cnblogs.com/chencheng/archive/2012/08/13/2637216.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: