adding Data Structures and Algorithms II C950
This commit is contained in:
+66
@@ -0,0 +1,66 @@
|
||||
# Student ID: 012498637
|
||||
# Student Name: Zakaria Benmoulay
|
||||
# Course: C950 - Data Structures and Algorithms II
|
||||
|
||||
|
||||
class ChainingHashTable:
|
||||
|
||||
# We are going to assigns all buckets with an empty list.
|
||||
def __init__(self, initial_capacity=40):
|
||||
# Let's initialize the hash table with empty bucket list entries.
|
||||
self.table = []
|
||||
for i in range(initial_capacity):
|
||||
self.table.append([])
|
||||
|
||||
# This func inserts a new item into the hash table.
|
||||
def insert(self, key, item):
|
||||
# Get the bucket list where this item will go.
|
||||
bucket = hash(key) % len(self.table)
|
||||
bucket_list = self.table[bucket]
|
||||
|
||||
# Let's check if the key already exists and update it if found.
|
||||
for kv in bucket_list:
|
||||
if kv[0] == key:
|
||||
kv[1] = item
|
||||
return True
|
||||
|
||||
# otherwise, we insert the item to the end of list.
|
||||
key_value = [key, item]
|
||||
bucket_list.append(key_value)
|
||||
return True
|
||||
|
||||
# This func returns the item if found, or None if not found.
|
||||
def lookup(self, key):
|
||||
# Let's find the correct bucket for this key.
|
||||
bucket = hash(key) % len(self.table)
|
||||
bucket_list = self.table[bucket]
|
||||
|
||||
# Let's search through the bucket for the matching key.
|
||||
for kv in bucket_list:
|
||||
if kv[0] == key:
|
||||
return kv[1]
|
||||
return None
|
||||
|
||||
# This func removes an item with matching key from the hash table.
|
||||
def remove(self, key):
|
||||
# Let's find the bucket where this key should exist.
|
||||
bucket = hash(key) % len(self.table)
|
||||
bucket_list = self.table[bucket]
|
||||
|
||||
# Let's search for and remove the matching key-value pair.
|
||||
for kv in bucket_list:
|
||||
if kv[0] == key:
|
||||
bucket_list.remove([kv[0], kv[1]])
|
||||
return print('Package ', key, 'successfully deleted.')
|
||||
|
||||
# Let's return None if the key is not found.
|
||||
return None
|
||||
|
||||
# This func returns a list of all (key, value) tuples stored in the hash table.
|
||||
# Let's use this to iterate through all packages when needed.
|
||||
def get_all(self):
|
||||
result = []
|
||||
for bucket_list in self.table:
|
||||
for kv in bucket_list:
|
||||
result.append((kv[0], kv[1]))
|
||||
return result
|
||||
Reference in New Issue
Block a user