Initially you have declared `node *table[N]` as global pointer.
As you might have already guessed, all global variables/ pointers are set to default values.(In this case, each pointer is set to NULL). 

So `head = table[hash_index]; // It's still NULL`

When you do `head->next`, you're trying to de-reference NULL which results in seg-fault.