gpt4 book ai didi

c - 我如何在 c 中创建哈希表的动态数组

转载 作者:太空宇宙 更新时间:2023-11-04 03:03:25 25 4
gpt4 key购买 nike

我有以下桶条目结构和哈希表设置

typedef struct Hash_Entry
{
struct Hash_Entry *next;
void *key_Data;
unsigned key_hash;
char key[5];
} Hash_Entry;

typedef struct Hash_Table
{
struct Hash_Entry **bucketPtr; /* Buckets in the table */
int size; /* Actual size of array. */
int numEntries; /* Number of entries in the table. */
int mask; /* Used to select bits for hashing. */
} Hash_Table;

我想为这个 Hash_Table 创建一个数组(或动态数组),这样当我觉得表已满时,我可以创建另一个表而不用重新调整它的大小

最佳答案

类似于:

void hash_table_init(Hash_Table *table, size_t entries)
{
size_t i;

table->size = 0;
table->numEntries = entries;
table->bucketPtr = malloc(table->numEntries * sizeof *table->bucketPtr);
for(i = 0; i < table->numEntries; i++)
table->bucketPtr[i] = NULL;
table->mask = 0; /* Not sure how to initialize this. */
}

我不太明白将初始桶作为指针保留的意义,我可能只是这样做

typedef struct {
...
Hash_Entry *buckets;
...
} Hash_Table;

假设大多数桶都会被实际使用,那为什么不用呢。 :)

关于c - 我如何在 c 中创建哈希表的动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8848533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com