Update the book based on the revised second edition (#1014)

* Revised the book

* Update the book with the second revised edition

* Revise base on the manuscript of the first edition
This commit is contained in:
Yudong Jin
2023-12-28 18:06:09 +08:00
committed by GitHub
parent 19dde675df
commit f68bbb0d59
261 changed files with 643 additions and 647 deletions

View File

@ -93,7 +93,7 @@ if __name__ == "__main__":
hmap.print()
# 查询操作
# 向哈希表输入键 key ,得到值 value
# 向哈希表输入键 key ,得到值 value
name = hmap.get(15937)
print("\n输入学号 15937 ,查询到姓名 " + name)

View File

@ -26,7 +26,7 @@ if __name__ == "__main__":
print_dict(hmap)
# 查询操作
# 向哈希表输入键 key ,得到值 value
# 向哈希表输入键 key ,得到值 value
name: str = hmap[15937]
print("\n输入学号 15937 ,查询到姓名 " + name)

View File

@ -34,11 +34,11 @@ class HashMapChaining:
"""查询操作"""
index = self.hash_func(key)
bucket = self.buckets[index]
# 遍历桶,若找到 key 则返回对应 val
# 遍历桶,若找到 key 则返回对应 val
for pair in bucket:
if pair.key == key:
return pair.val
# 若未找到 key 则返回 None
# 若未找到 key 则返回 None
return None
def put(self, key: int, val: str):
@ -107,7 +107,7 @@ if __name__ == "__main__":
hashmap.print()
# 查询操作
# 向哈希表输入键 key ,得到值 value
# 向哈希表输入键 key ,得到值 value
name = hashmap.get(13276)
print("\n输入学号 13276 ,查询到姓名 " + name)

View File

@ -37,9 +37,9 @@ class HashMapOpenAddressing:
first_tombstone = -1
# 线性探测,当遇到空桶时跳出
while self.buckets[index] is not None:
# 若遇到 key ,返回对应桶索引
# 若遇到 key ,返回对应桶索引
if self.buckets[index].key == key:
# 若之前遇到了删除标记,则将键值对移动至该索引
# 若之前遇到了删除标记,则将键值对移动至该索引
if first_tombstone != -1:
self.buckets[first_tombstone] = self.buckets[index]
self.buckets[index] = self.TOMBSTONE
@ -48,7 +48,7 @@ class HashMapOpenAddressing:
# 记录遇到的首个删除标记
if first_tombstone == -1 and self.buckets[index] is self.TOMBSTONE:
first_tombstone = index
# 计算桶索引,越过尾部返回头部
# 计算桶索引,越过尾部返回头部
index = (index + 1) % self.capacity
# 若 key 不存在,则返回添加点的索引
return index if first_tombstone == -1 else first_tombstone
@ -127,7 +127,7 @@ if __name__ == "__main__":
hashmap.print()
# 查询操作
# 向哈希表输入键 key ,得到值 val
# 向哈希表输入键 key ,得到值 val
name = hashmap.get(13276)
print("\n输入学号 13276 ,查询到姓名 " + name)