gpt4 book ai didi

c - 在 C 中寻找数组(与链表)哈希表实现

转载 作者:太空狗 更新时间:2023-10-29 14:59:58 25 4
gpt4 key购买 nike

我正在寻找用 C 语言实现的哈希表,它将其对象存储在(二维)数组而不是链表中。即,如果发生碰撞,导致碰撞的对象将存储在下一个空闲行索引中,而不是推送到链表的头部和第一个元素。

此外,对象本身必须复制到哈希表中,而不是通过指针引用。 (对象不会在程序的整个生命周期内都存在,但表会)。

我知道这样的实现可能有严重的效率缺陷并且不是“标准的散列方法”,但是当我在一个非常特殊的系统架构上工作时我需要这些特性。

谢谢

最佳答案

一个 super 简单的实现:

char hashtable[MAX_KEY][MAX_MEMORY];
int counts[MAX_KEY] = {0};

/* Inserting something into the table */
SomeStruct* some_struct;
int hashcode = compute_code(some_struct);
int size = sizeof(SomeStruct);
memcpy(hashtable[hashcode] + counts[hashcode] * size, some_struct, size);
++counts[hashcode];

不要忘记检查 MAX_MEMORY

关于c - 在 C 中寻找数组(与链表)哈希表实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2731117/

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