我正在学习结构和哈希表,而我正试图弄清楚如何把所有东西放在一起。我希望能够在哈希表中添加单词,然后每次第二次添加该单词时,它会递增计数器,而不是再次添加该单词。这就是我到目前为止所做的:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define HASH_MULTIPLIER 65599
struct NodeType
{
char *word;
int count;
struct NodeType *next;
};
typedef struct NodeType Node;
unsigned int hash(const char *str);
Node **ht_create(void);
int htsize;
int main(int argc, char *argv[])
{
if (argc <= 1)
{
printf("Please declare a table size");
return 1;
}
htsize = atoi(argv[1]);
}
unsigned int hash(const char *str)
{
int i;
unsigned int h = OU;
for (i = 0; str[i] != '\0'; i++)
h = h * HASH_MULTIPLIER + (unsigned char) str[i];
return h % htsize;
}
Node **ht_create(void)
{
}
所以这就是我被困的地方。如果我想动态分配大小为htsize
的哈希表,我是否只使用malloc初始化一个数组?我真的迷失在这里,有人能指出我正确的方向吗?
答案 0 :(得分:0)
您的哈希表可能被定义为指针数组。数组中的每个条目都指向散列到相同值的单词链接列表的开头。因此,您将使用malloc或calloc来创建指针数组。最初,它们都是NULL,因为哈希表开始是空的。