作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在 C 中初始化一个 hashmap。我已经为 hashnode 和 hashmap 创建了结构,如下所示,但我需要将其发送到函数
void hashmap_init(hashmap_t *hm, int table_size);
我需要将 HashMap “hm”初始化为给定大小和 item_count 0。必须确保“table”字段初始化为大小为“table_size”的数组并用 NULL 填充。
typedef struct hashnode {
char key[128];
char val[128];
struct hashnode *next;
} hashnode_t;
typedef struct {
int item_count;
int table_size;
hashnode_t **table;
} hashmap_t;
#define HASHMAP_DEFAULT_TABLE_SIZE 5
最佳答案
使用 malloc()
分配 table_size
存储桶数组。
void hashmap_init(hashmap_t *hm, int table_size) {
hm->item_count = 0;
hm->table_size = table_size;
hm->table = malloc(table_size * sizeof *(hm->table));
for (int i = 0; i < table_size; i++) {
hm->table[i] = NULL;
}
}
如果您需要删除 HashMap ,请反转分配:
for (int i = 0; i < hm->table_size; i++) {
free(hm->table[i]);
}
free(hm->table);
关于c - 如何在c中初始化hashmap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58071218/
我是一名优秀的程序员,十分优秀!