1.动态字符串结构
2.链表结构
3.哈希表节点
当两个健的哈希值相同的时候,使用链表连接在一起,解决冲突
4.字典
5.给字典中添加新的键值对:
5.1使用字典设置的哈希函数,计算健key的哈希值
Hash=dict->type->hashFunction(key);
5.2使用哈希表的sizemask属性和哈希值,计算出索引值
Index=hash&dict->ht[x].sizemask;//其中hx可能是ht[0]或者ht[1]
例如,对如下字典添加一个(k0,v0):
Hash=dict->type->hashFunction(k0);//假设计算出来为8
Index=hash&dict->ht[0].sizemask=8&3=0;//计算出k0的索引值为0,表示(k0,v0)应该放在放置到哈希表数则的索引0位上,如图:
如果冲突了,即0位上也映射了一个(k1,v1),则使用拉链法解决冲突,并且此时使用的是头插法,将后来的插在前边.