Symbol table and hashing ADT using separate chaining.
Pretty proud of this one as it took almost too weeks.
Separate chaining was implemented using a doubly linked list of nodes to resolve collisions. The distribution of key value pairs is fairly even throughout the table.