The load function works perfectly
I'm afraid I'm gonna have to disagree. You're calling malloc twice when the list is empty. So that's one node per list that you can effectively never free, as the pointer to that node is immediately orphaned.
As for the unload function. You problems are limited to this section:
struct node *current_table = table[i]; ...