发布时间:2025-01-25 09:31:40 点击量:
HASH GAME - Online Skill Game GET 300
当找到该结点的位置之后,如果 key 值不是我们想要的 key 值,就需要继续向后找,只有当结点的状态位EMPTY时,查找才会停止,当然如果找到的EMPTY还是没有找到我们想要的 key 值,那么该关键字一定不在当前的哈希表中。需要注意,会不会存在一种情况,当我们在vector中遍历的时候,循环条件是当前结点的状态不为EMPTY,进入了死循环?会的。这是因为我们引入了DELETE的结果,设想表中的所有节点都是DELETE或者EXIST状态,且我们要查找的key不在HashTable中,死循环是必然的情况。
同样一组数据放到拉链法构成的哈希表中,每一个结点不再是只记录key、value值,这里多存放了一个指向next的指针,这样的话vector的每个点上都可以向下追加任意个结点。拉链法似乎更加的有效,载荷因子在这里也显得不是那么重要,但我们依旧需要考虑这个问题。载荷因子虽然在这里的限制比开放地址法更加宽松了些,但是如果我们只是在10个结点下无限制的串加结点,也是会增大查找的时间复杂度。这里我们把载荷因子提高到1,减轻增容的压力。另外,vector中保存的是 Node* ,这是为了兼容我的向下指针,这样的话,也就不再需要状态标志。初次之外,其他部分和开放地址法相比,思想大致相同。