【发布时间】:2015-01-05 18:54:06
【问题描述】:
我完成了我的哈希函数,现在它似乎打印了相同的地址而不是所有地址。它也只是一遍又一遍地打印完全相同的地址我几乎可以肯定错误在“Put”函数中,因为它是添加到结构数组中的那个。但我将所有代码都留在这里,以防错误出现在其他地方。我从一个文件中获取数据,用于测试任何可以使用 ASCII 文件的文件。提前感谢您的建议!
我制作的结构在这里:
typedef struct HashNode{
char* key;
int data;
struct HashNode* next;
} HashNode;
typedef struct Hashtable{
int size;
struct HashNode** hashArray;
} Hashtable;`
它们一定有问题,因为它们没有保存我在其中输入的内容。
【问题讨论】:
-
hashtable->hashArray = malloc(sizeof(HashNode*)*TABLE_LENGTH);或者更清楚:hashtable->hashArray = malloc(sizeof(TABLE_LENGTH * sizeof *hashtable->hashArray); -
in
Put()node->key = keyWord;指原始关键字,由调用者的word提供。你需要在这里strdup()。 -
请进一步解释!目前,claptrap 的评论发生了一些变化,它必须为每个输出打印不同的值,但是打印出来的单词似乎一直都是一样的。这是文本文件中的最后一个单词。谢谢
-
另外:在很多地方(循环)你引用
TABLE_LENGTH,你已经通过hashtable->size = TABLE_LENGTH;将该值存储在哈希表结构中,你可以引用hashtable->size而不是常数。 -
顺便说一句,我是从第一个函数打印的——最后一个 if 语句。现在似乎是打印问题,我也在寻找要解决的问题。
标签: c algorithm struct hashtable