Fix rehashing function will not call insert_data function (#1803)

* Fix rehashing function will not call insert_data function

* Fix typo

* Update loop syntax instead of allocating a list

Co-Authored-By: Christian Clauss <cclauss@me.com>

Co-authored-by: Christian Clauss <cclauss@me.com>
This commit is contained in:
KDH 2020-03-16 19:19:13 +09:00 committed by GitHub
parent ab3400bfad
commit 45524dd6d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 6 additions and 5 deletions

View File

@ -24,7 +24,7 @@ class DoubleHash(HashTable):
def __hash_double_function(self, key, data, increment):
return (increment * self.__hash_function_2(key, data)) % self.size_table
def _colision_resolution(self, key, data=None):
def _collision_resolution(self, key, data=None):
i = 1
new_key = self.hash_function(data)

View File

@ -62,7 +62,8 @@ class HashTable:
self.size_table = next_prime(self.size_table, factor=2)
self._keys.clear()
self.values = [None] * self.size_table # hell's pointers D: don't DRY ;/
map(self.insert_data, survivor_values)
for value in survivor_values:
self.insert_data(value)
def insert_data(self, data):
key = self.hash_function(data)

View File

@ -18,9 +18,9 @@ class HashTableWithLinkedList(HashTable):
* self.charge_factor
)
def _colision_resolution(self, key, data=None):
def _collision_resolution(self, key, data=None):
if not (
len(self.values[key]) == self.charge_factor and self.values.count(None) == 0
):
return key
return super()._colision_resolution(key, data)
return super()._collision_resolution(key, data)

View File

@ -11,7 +11,7 @@ class QuadraticProbing(HashTable):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def _colision_resolution(self, key, data=None):
def _collision_resolution(self, key, data=None):
i = 1
new_key = self.hash_function(key + i * i)