목차
1. class Hashtable
2. __main__
3. 예상 출력값
1. class Hashtable
사실 python에서는 이미 hashing에 의해 작동되는 함수들이 많지만, cs를 공부하는 의미로 제작해 보도록 하겠습니다.
class Hashtable:
def __init__(self):
self.table = [None for _ in range(13)]
def full(self)-> bool:
tmp = True
for i in self.table:
if i==None:
tmp = False
break
return tmp
def put(self, key: int, value: str):
if not(self.full()):
while True:
if self.table[key%13]==None:
self.table[key%13] = value
break
else:
key += 1
def delete(self, key: int)-> str:
while True:
if self.table[key%13]==None:
print(f'There is no value in {key}')
break
else:
if self.table[key%13] == False:
key += 1
else:
tmp = self.table[key%13]
self.table[key%13] = False
return tmp
def show(self):
for i in self.table:
if i!=None:
if i!=False:
print(i)
2. __main__
if __name__ == '__main__':
hashing = Hashtable()
nums = [18, 41, 22, 44, 59, 32, 31, 73]
nums_str = ['18!', '41!', '22!', '44!', '59!', '32!', '31!', '73!']
for i in range(len(nums)):
hashing.put(nums[i], nums_str[i])
hashing.show()
print(hashing.table)
3. 예상 출력값
'''
41!
18!
44!
59!
32!
22!
31!
73!
[None, None, '41!', None, None, '18!', '44!', '59!', '32!', '22!', '31!', '73!', None]
'''
전체 코드는 제 github에서 확인할 수 있습니다.
github.com/imgzon3/algorithm/blob/main/Hash/linear_hash_table.py
'cs > 자료구조' 카테고리의 다른 글
[Hash]35. Hashing (0) | 2021.03.10 |
---|---|
[Dictionary]34. Dictionaries (0) | 2021.02.28 |
[Heap]33. Bottom-up Heap Construction (0) | 2021.02.28 |
[Heap]32. Vector(array) Based Heap 구현 (0) | 2021.02.28 |
[Heap]31. Vector(array) Based Heap(벡터(배열)기반 힙) (0) | 2021.02.27 |
댓글