在C中实现哈希图

Sat*_*346 -1 c c++ hashmap hashcode

我需要像在c ++中使用map一样,阻碍c中的键和值。

请分享最简单的示例以在c中的存储中存储唯一的键和值。键,我可以是任何字符串,值将是字符串。

谢谢

Giu*_*Pes 5

创建哈希图需要一些工作,但是绝对是一件有趣的事情。

构建哈希图的一般方法是创建一个名为buckets的数组,其中包含键和值。但是,这种结构不能处理冲突。当哈希函数将不同的键分配给同一值时,两个值之间可能会发生冲突。

为了解决该问题,将第三字段(通常是指针)添加到存储桶中。当发生冲突时,新值将添加到第三字段所指向的数据结构中,通常是链表或二叉树。有关如何解决冲突的更多信息,请阅读此链接

上述哈希映射结构的示例(请注意索引153处的冲突): 哈希图结构

要访问哈希表,将自定义哈希函数(该函数返回标识数组索引位置的整数)应用于该键。最后,检查用于访问元素的键和哈希函数返回的索引处存储在数组中的键是否匹配。如果他们这样做,那么您已经找到了正确的元素。

这只是一个例子。您可以找到实现哈希图的不同方法。

我建议您检查以下内容:exampleexample_2。另外,这里已经问这个问题

是一个教程,逐步解释了如何在C中创建哈希映射。