免責事項:これは宿題の問題です。当然のことながら、私はそれを自分で解決しようとしています。わからない問題が発生したようですので、よろしくお願いします。
単語のセットをハッシュし、それをリンクリストの配列に挿入する必要があります。したがって、3つの異なる単語にハッシュ38がある場合、array [38]に、3つの単語のリンクリストが必要です。
私はこの構造体を使用しています
struct Word {
char* word;
struct Word* next;
};
ハッシュした後、次のように配列に挿入します。
struct Word* table[1000]; // array of linked-lists
char word[128];
while(fgets(word, sizeof(word), dict) != NULL) {
hashValue = hashWord(word, strlen(word));
struct Word *newWord = malloc(sizeof(struct Word));
newWord->word = word;
if (table[hashValue] == NULL) {
table[hashValue] = newWord;
} else { // at index hashValue, table already contains at least one element
// insert new word as first element of linked-list
newWord->next = table[hashValue];
table[hashValue] = newWord;
}
}
ハッシュが38の単語が約5つあることは知っていますが、それらを印刷すると、同じ単語が5回取得されます。
struct Word* foo = table[38];
while (foo->next != NULL) {
printf("%s", foo->word); // prints the same word every time
foo = foo->next;
}
ある時点でリンクリストを上書きしているようですが、どこにあるのかわかりません。