Below is a piece of my program which loads a file(dictionary) into memory using hashtables. The dictionary contains only 1 word per line. But the process is taking too much time. How do I optimize it ??
 bool load(const char* dictionary)
{
    // TODO
    int k;
    FILE* fp = fopen(dictionary,"r");
    if(fp == NULL)
        return false;
    for(int i=0; i<26; i++)
    {
        hashtable[i] = NULL;
    }
    while(true)
    {
        if(feof(fp))
            return true;
        node* n = malloc(sizeof(node));
        n->pointer = NULL;
        fscanf(fp,"%s",n->word);
        if(isalpha(n->word[0]))
        {
            k = hashfunction(n->word);
        }
        else return true;
        if(hashtable[k] == NULL)
        {
            hashtable[k] = n;
            total_words++;
        }
        else
        {
            node* traverse = hashtable[k];
            while(true)
            {
                if(traverse->pointer == NULL)
                {
                    traverse->pointer = n;
                    total_words++;
                    break;
                }
                traverse = traverse->pointer;
            }
        }
    }
   return false; 
}
 
     
    