Hash Table
)}

Notebook 3

This notebook will modify the insert logic to account for collisions. Click here to access it.

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``````

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)
``````

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.

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.