我之前做过一个有关哈希表的小练习,但用户输入的是数组大小,数据结构如下所示(所以每次用户输入的是一个数字和一个单词)。
struct data
{
int key;
char c[20];
};
因为我知道数组的大小,而且用户也告诉我他将输入多少项,所以这很简单。我做法是:
- 对用户给我的键进行哈希
- 在数组中找到array[hashed(key)]的位置
- 如果它是空的,我就把数据放在那里
- 如果不是空的,我就把它放在下一个可用的位置。
在这种情况下,数组应该有多长?我如何对单词进行哈希?我应该使用开放地址哈希还是链式哈希?练习说如果我们在网上找到了哈希表,我们可以直接使用它。但我更喜欢理解并自己创建它。任何线索都会有帮助:)
在这个练习(使用哈希表的倒排索引)中,结构看起来像这样。数据类型是我将创建的哈希表的类型。
struct posting
{
string word;
posting *next
}
struct data
{
string word;
posting *ptrpostings;
data *next
};