Hash example 2
해시 Hash 예시 2
기본적으로 ChatGPT를 이용하여 틀을 잡고 만든 것
함수
- 해시 테이블 생성
- 크기가 100인 배열 초기화 __init__
- 해시 코드 생성 hash_function
- 각 문자의 아스키 코드 값을 합산
- 삽입 함수
- 해시테이블의 주어진 해시 코드값을 인덱스로 연결리스트를 이용하여 삽입
- 검색 함수
- 해시테이블에서 주어진 해시 코드값으로 인덱스로 연결리스트를 타고 주어진 키 값을 비교하면서 검색
- 삭제 함수
- 검색함수와 과정은 비슷하나 enumerate를 사용하여 index도 같이 구해서 del 로 편하게 삭제
class HashTable:
# 해시테이블 초기화
def __init__(self):
self.max_size = 100
self.table = [ [] for _ in range(self.max_size) ]
# 해시코드 생성
# 기준 : 아스키코드 합산
def get_hash_key(self, key):
hash_key = 0
for char in key:
hash_key += ord(char)
return hash_key % self.max_size
# 삽입 함수
# 연결리스트로 해시테블에 해당 인덱스에 추가
def add(self, key, value):
hash_key = self.get_hash_key(key)
for index, item in enumerate(self.table[hash_key]):
if item[0] == key:
self.table[hash_key][index] = (key,value)
return
self.table[hash_key].append((key,value))
# 검색 함수
# 해시테이블에서 키값의 해시코드를 찾아서 출력하거나 없으면 None 출력
def get(self,key):
hash_key = self.get_hash_key(key)
for item in self.table[hash_key]:
if item[0] == key:
return item[1]
return None
# 삭제 함수
def delete(self,key):
hash_key = self.get_hash_key(key)
for index, item in enumerate(self.table[hash_key]):
if item[0] == key:
del self.table[hash_key][index]
return
# 예시
# 해시테이블 생성
hash_table = HashTable()
# 삽입
print("(apple, 10) 삽입")
hash_table.add('apple', 10)
print("(banana, 20) 삽입")
hash_table.add('banana', 20)
print("(orange, 30) 삽입")
hash_table.add('orange', 30)
print()
# 검색
print("apple 검색 :",hash_table.get('apple')) # 10
print("grape 검색 :",hash_table.get('grape')) # None
print()
# 삭제
print("apple 삭제")
hash_table.delete("apple") # apple 삭제
print()
# 검색
print("apple 검색 :",hash_table.get('apple'))
(apple, 10) 삽입
(banana, 20) 삽입
(orange, 30) 삽입
apple 검색 : 10
grape 검색 : None
apple 삭제
apple 검색 : None