Итак, у меня есть функции. Как вставить числа в Hashtable
? A for
, который идет до размера стола? Я не знаю, что происходит внутри for
, если оно существует.Вставить функцию Hashtable в C
#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]) Что я могу сделать для пользователя, чтобы определить размер хеш-таблицы? Является ли это возможным? Или я должен установить размер?
не 'хэш-функцию (ключ)' предположим, что '(хэш-функцию Chave)' (или не должны 'chave' быть переведены на' key' в качестве аргумента функции)? это компилируется? – tay10r
Это была ошибка перевода, извините. Уже отредактирован! И нет, еще не компилируется, потому что основная функция недоделана. – U23r
кажется, что вы создали некоторые синтаксические ошибки при переводе. Попробуйте исправить их. Вы также можете показать реализацию хеш-функции, это может быть полезно. – tay10r