kin*_*siu 5 c arrays hashtable hash-collision
我在C中寻找一个哈希表实现,它将对象存储在(二维)数组而不是链表中.即,如果发生碰撞,则导致碰撞的对象将存储在下一个自由行索引中,而不是被推送到链接列表的头部和第一个元素.
另外,对象本身必须复制到哈希表,而不是由指针引用.(对象不会在程序的整个生命周期中存在,但表格确实存在).
我知道这样的实现可能具有严重的效率缺陷,并且不是"标准散列方式",但是当我在一个非常特殊的系统架构上工作时,我需要这些特性.
谢谢
一个超级简单的实现:
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];
Run Code Online (Sandbox Code Playgroud)
别忘了检查MAX_MEMORY
.
归档时间: |
|
查看次数: |
2388 次 |
最近记录: |