【发布时间】:2013-07-18 04:46:01
【问题描述】:
所以,我有这些功能。如何在Hashtable 中插入数字? for 直到桌子的大小?我不知道for 里面有什么,如果它存在的话。
#include <stdio.h>
//Structure
typedef struct Element {
int key;
int value;
} Element;
typedef struct HashTable {
Element *table[11];
} HashTable;
//Create an empty Hash
HashTable* createHashTable() {
HashTable *Raking = malloc(sizeof(HashTable));
int i;
for (i = 0; i < 11; i++) {
Raking->table[i] = NULL;
}
return Raking;
}
//Insert element
void insertElement(HashTable *Raking, int key, int value) {
int h = hashFunction(key);
while(Raking->table[h] != NULL) {
if(Raking->table[h]->key == key) {
Raking->table[h]->value = value;
break;
}
h = (h + 1) % 11;
}
if(Raking->table[h] == NULL) {
Element *newElement = (Element*) malloc(sizeof(Element));
newElement->key = key;
newElement->value = value;
Raking->table[h] = newElement;
}
}
int main() {
HashTable * Ranking = createHashTable();
/** ??? **/
}
有人可以向我解释如何使用这些结构编写我的主要功能吗?在这种情况下,我正在修复此表中的元素数量,对吗? (表 [11])我可以为用户做些什么来确定哈希表的大小?可能吗?还是我应该设置大小?
【问题讨论】:
-
不是
hashFunction(key)假设是hashFunction(chave)(或者不应该在函数参数中将chave转换为key)?这编译了吗? -
翻译错误,抱歉。已经编辑了!不,还没有编译,因为 main 函数还没有完成。
-
您在翻译时似乎产生了一些语法错误。请尝试修复它们。您还可以展示哈希函数的实现,它可能很有用。
-
这是使用线性探测实现的吗?
-
像什么,@TaylorFlores?又看了一遍,这次没有发现翻译错误。
标签: c data-structures hash hashtable hashcode