Notebook 3
This notebook will modify the insert logic to account for collisions. Click here to access it.
Task 1
Inside the HashTable
class, add another function called insert_node
.
def insert_node(self, buckets, index, node):
if not buckets[index]:
buckets[index] = node
else:
curr_node = buckets[index]
while curr_node.next:
curr_node = curr_node.next
curr_node.next = node
First, the method checks whether the bucket at the given index is empty. If so, the node is simply added to the bucket.
def insert_node(self, buckets, index, node):
if not buckets[index]:
buckets[index] = node
## ...
If the bucket is not empty, the code finds the last node in the bucket and adds the new node as the next one to it. This makes the new node the last one in the bucket.
def insert_node(self, buckets, index, node):
## ...
else:
curr_node = buckets[index]
while curr_node.next:
curr_node = curr_node.next
curr_node.next = node
Task 2
After creating the node to be inserted, call insert_node.
def insert(self, key, value):
...
node = Node(key, value)
self.insert_node(self.buckets, index, node)
Task 3
Run all cells.
BUCKET 0
key = Cucumber, value = 1.29
BUCKET 1
key = Papaya, value = 5.99
key = Carrot, value = 1.49
BUCKET 2
key = Tomato, value = 1.99
BUCKET 3
key = Kale, value = 4.99
BUCKET 4
None
BUCKET 5
None
BUCKET 6
key = Watermelon, value = 7.99
BUCKET 7
None
BUCKET 8
key = Spinach, value = 2.99
key = Broccoli, value = 2.49
key = Orange, value = 2.49
BUCKET 9
None
BUCKET 10
key = Apple, value = 1.99
key = Lemon, value = 0.99
BUCKET 11
None
BUCKET 12
None
BUCKET 13
key = Mango, value = 3.99
BUCKET 14
None
BUCKET 15
key = Banana, value = 2.99
Solution
You can access the solution code here.
This workbook was created by Jad and Rayan Slim. Feel free to explore some of their courses:
The Complete Java Development Bootcamp
The Complete Spring Boot Development Bootcamp – Become a Java Web Developer
Feedback Summary
0.0
0 students
5
0%
4
0%
3
0%
2
0%
1
0%
Written Reviews
There are no written reviews yet.