出于某种原因,在我的散列表中插入所有要素,其最终价值相同。 例如,如果我有3个单元,则所有3个单元的“字数”与最后一个插入该指数的字数相同。 在插入之前,我积极为每个要素分配记忆,因此我不知道这个问题。
任何人都有cl? 感谢。
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]
", 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;
}