#coding = utf-8
classArray:def __init__(self, size=32, init=None):
self._size=size
self._items= [init] *sizedef __getitem__(self, index):returnself._items[index]def __setitem__(self, index, value):
self._items[index]=valuedef __len__(self):returnself._sizedef clear(self, value=None):for i inrange(self._items):
self._items[i]=valuedef __iter__(self):for item inself._items:yielditemclassSlot:"""定义一个哈希表数组的槽
注意:一个槽有三种状态
1. 从未被使用过,HashMap.UNUSED。 此槽没有被使用和冲突过,查找时只要找到UNUSED 就不用再继续探查了
2. 使用过但是remove了, 此时是HashMap.EMPTY,该点后面的元素仍可能是有key
3. 槽正在使用Slot 节点"""
def __init__(self, key, value):
self.key=key
self.value=valueclassHashTable:#表示slot 没有被使用过
UNUSED =None#使用过被删除
EMPTY =Slot(None, None)def __init__(self):#初始化,数组的每个元素都是UNUSED<