创建哈希表

本文详细介绍了如何实现哈希表,采用链地址法,数据格式为二维数组。通过创建哈希表类,设置了存储数组、数据计数和容量限制属性。插入&修改数据时,根据key获取哈希码,更新或插入数据。获取数据则根据key遍历桶查找。此外,还涵盖了删除数据和其他辅助方法,如判断是否为空和获取数据数量。
摘要由CSDN通过智能技术生成

哈希表

经过前面那么多内容的学习, 我们现在可以真正实现自己的哈希表了.

可能你学到这里的时候, 已经感觉到数据结构的一些复杂性, 但是如果你仔细品味, 你也会发现它在设计时候的巧妙和优美, 当你爱上它的那一刻, 你也真正爱上了编程.

我们这里采用链地址法来实现哈希表:

实现的哈希表(基于storage的数组)每个index对应的是一个数组(bucket).(当然基于链表也可以.)

bucket中存放什么呢? 我们最好将key和value都放进去, 我们继续使用一个数组.(其实其他语言使用元组更好)

最终我们的哈希表的数据格式是这样: [[ [k,v], [k,v], [k,v] ] , [ [k,v], [k,v] ], [ [k,v] ] ]

 

创建哈希表

  • 我们像封装其他数据结构一样, 先来创建一个哈希表的类: HashTable

代码解析:

  • 我们定义了三个属性:
  • storage作为我们的数组, 数组中存放相关的元素.
  • count表示当前已经存在了多少数据.
  • limit用于标记数组中一共可以存放多少个元素.
  • 另外, 我们直接将哈希函数定义在了HashTable中

插入&修改数据

现在, 我们来做向哈希表中插入数据

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值