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

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.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值