HashMap Python3 Program with two different methods for collision resolition with consideration for Big O time complexity.
Part 1 - Singly Linked List Implement an optimized HashMap class. Use a dynamic array to store your hash table and implement chaining for collision resolution using a singly linked list. Chains of key/value pairs will be stored in linked list nodes. Implementation will include the following methods: put() get() remove() contains_key() clear() empty_buckets() resize_table() table_load() get_keys() find_mode()
Part 2 - Open Addressing Implement an optimized HashMap class. Use a dynamic array to store your hash table, and implement Open Addressing with Quadratic Probing for collision resolution inside that dynamic array. Implementation will include the following methods: put() get() remove() contains_key() clear() empty_buckets() resize_table() table_load() get_keys() iter() next()