2015-02-12 38 views
0

对于我的一个计算机科学类,我们需要编写一个程序,使用散列来存储键和值的列表。这个问题并不是真正的哈希方法,我只是对实现数据结构/使用什么数据结构的最佳方式感到好奇。散列作为一个整体

通过我们的书和一些在谷歌上的基本搜索,我注意到存储这些值并不是真正的“最佳方法”。我似乎遇到的是链接列表的冲突解决方法等。

那么是否有一个“最佳”的通用数据结构用于哈希?这是我第一次把哈希算法应用到算法分析中,所以我没有太多的工作要做。

备注:我熟悉链接列表和某些程度的树(在实践中从未使用过)。

回答

1

如果这是一个计算机科学课的作业,那么我建议你采用最简单的哈希方案。

在一个简单的场景中,可能的散列值是有限集合中的整数,比如说从0到n-1。为此,你需要一个长度为n的数组。

你在数组中存储的是下一步......在一个简单的场景中,你不应该处理碰撞算法。如果发生冲突,您只需将所有元素存储在链接列表中的相同数组索引处。在那里你有答案要存储在数组中。

+0

因此,对于这种解决方案,最简单的方法是使用哈希中的每个桶作为链接列表来实现这种形式的冲突解决方案? – user3857017 2015-02-12 08:13:49

+1

我不知道我理解你的问题。散列是一个数字。存储桶可以被实现为包含元素的链接列表的类。然后,类有n个不同散列值的实例,存储在由散列值索引的数组或向量中。 – Sztrovacsek 2015-02-12 09:04:46

+0

哈希表?那是更正确的术语吗?这是有道理的,这是我一开始就倾向于的,但不确定这一切的后勤。 – user3857017 2015-02-12 20:45:38