查找也要顺着探测链走
补全 find:从算出的槽位开始往后找,遇到空格才算没有。 查 23 号,补全后输出它在哪一格。
表满了还往里塞会转不出来
开放寻址最危险的一点:表满了之后,"往后找空格"这个循环永远不会停。 补全 put,满了就返回 表已满。一张 4 格的表塞 5 个人,输出第 5 次的结果。
哈希表的查找第一步永远是
不管用哪种冲突处理,查找的第一步永远是【0】。
链地址法下怎么删
链地址法下删掉一条记录,做法是【0】。
开放寻址下删除要留个什么
开放寻址下删掉一条,通常要在原地留一个【0】。
删掉一个之后还剩几条
运行下面这段程序(链地址法,五个人): def new_table(cap): return [[] for _ in range(cap)] table = new_table(8) for key, name in [(17,
增:写一个 put
补全 put(链地址法)。放完五个人之后,输出表里一共有几条。
查:写一个 get
补全 get,查 23 号。 注意第 7 格里有两个人,不能拿到第一个就返回。
删:写一个 delete
补全 delete:从那一格的列表里把这个键去掉。 删掉 15 号之后,输出第 7 格里还剩几个。
三个操作串起来验一遍
把 put / get / delete 都写出来,然后验三条: 放完五个人,get(23) 是「北辰」 删掉 15 号之后,get(15) 是「没这个人」 删完之后 get(23) 还是「北辰」(同一格的另一个不能被误删) 三条全过输出