По какой-то причине, когда я вставляю элементы в мою хэш-таблицу, все элементы с одним и тем же индексом имеют одинаковое значение.Например, если у меня есть три элемента в индексе 2 хеш-таблицы, тогда у всех трех будет то же слово, что и у последнего, вставленного в этот индекс.Я динамически распределяю память для каждого элемента перед вставкой, поэтому я не знаю проблемы.
У кого-нибудь есть подсказка?Благодарю.
struct word{
char *word;
struct word *next;
};
struct word *hashTable[20];
void func(const char *file)
{
char word[1000];
int i;
FILE *infile = stdin;
infile = fopen(file, "rb");
if(infile == NULL) {
printf("cannot open [%s]\n", file);
return;
}
while(fscanf(infile, "%s" word) != EOF) {
struct word *w;
w = malloc( sizeof( struct word ));
w->word = word;
w->next = NULL;
insert(w);
}
fclose (infile);
}
void insert(struct word *v)
{
if( hashTable[hash(v->word)] )
{
struct word *end = hashTable[hash(v->word)];
while(end->next != NULL ) {
end = end->next;
}
end->next = v;
}
else
hashTable[hash(v->word)] = v;
}