06. 哈希表的原理,如何处理冲突,如何删除元素

原理

哈希表是一种根据关键字key来访问值value的一种数据结构.将key通过某种运算f(x), 由此得到f(key), 从而索引到数组中的元素value.这种运算f(x)即为hash函数, 通常的做法是将key通过运算后, 对数组长度取模, 得到一个地址空间, 从这个地址空间以O(1)的速度存取value.

哈希冲突

不同的key通过hash函数运算, 可能得到相同的索引, 即产生了哈希冲突, 此时可采用开放寻址法和链表法.

开放寻址法 当冲突发生时, 按线性顺序, 依次找下一个没有存入元素的空间存放value.链表法 当冲突发生时, 将value放入hash(x)所对应的地址空间为链头的链表中, 发生冲突的key一个接一个在该链头下排成一条链.

删除元素

开放寻址法不能直接删除元素, 可以将需要删除的元素打上标记, 以表示该元素不存在.链表法可以用链表的删除方法, 如需删除 节点i, 则让 节点i-1 的next指向 节点i+1.

好文推荐

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。