Я пытаюсь реализовать хеш-таблицу в C. Мы хэшируем значение и делаем по модулю размер таблицы, чтобы получить индекс i. Каждая запись таблицы представляет собой связанный список. Затем мы помещаем значение в i ...

-1
Wil123 21 Мар 2021 в 19:55

1 ответ

Лучший ответ

Вам следует

  • Укажите типы аргументов функции.
  • Выделить для массива index_table.
  • Удалите лишний malloc(), результат которого перезаписывается на NULL, чтобы устранить утечку памяти.
  • Используйте правильный синтаксис для for: используйте ; вместо ,.
  • Верните созданный объект.
struct hash_table* createTable(uint32_t N) { /* specify the type of argument */
     /* add size of the table */
     struct hash_table* table = malloc(sizeof(struct hash_table) + sizeof(table->index_table[0]) * N);
     table->size = N;
     for (uint32_t i=0; i<N; i++) { /* use correct for syntax */
         /* remove malloc() that is causing memory leak */
         table-> index_table[i] = NULL /*Empty list*/;
     }
     return table; /* return what is created */
}

3
MikeCAT 21 Мар 2021 в 16:57