如何组合使用哈希和堆的数据结构

时间:2013-11-26 09:11:50

标签: c data-structures heap hashtable

让我们说我们有一个修理汽车的车库,在空闲的情况下,它通过FIFO工作,但是有一些情况下它会根据损坏的严重程度来修理汽车(换句话说,它将开始修理汽车最高伤害等级而不是FIFO)

现在,我们必须使用两个数据结构,即最大堆和链接哈希,以便存储汽车,并运行其他功能。

您认为我们如何将这两种数据结构结合起来以实现我们的目标? 唯一的方法是使用两个独立的数据结构吗? (一个用于堆,一个用于散列)。或者是否有另一种方法可以将这两种类型结合起来?

我们对这类事情不熟悉,如果有人能给我们任何解释和指示,我们会​​很高兴

非常感谢

1 个答案:

答案 0 :(得分:1)

您可以链接哈希映射和堆,但这样做可能有点棘手。它给你的唯一好处是你可以快速找到堆中的特定节点,而不必搜索堆。

但是,我无法想象,当FIFO队列是更合理的选择时,为什么要使用最大堆作为默认数据结构。如你所说,默认是按FIFO顺序处理事物。

使用FIFO队列作为主要数据结构,项目将按插入顺序删除。如果您想不时根据最大损坏删除项目,可以搜索队列以找到该项目,然后手动将其删除。或者,如果您无法搜索队列,您可以反复出列并排队项目,直到找到所需的项目为止,然后将其余的队列/队列,直到您按顺序排队。

如果使用键入插入时间的最大堆,则必须向后进行密钥比较以适应FIFO行为。您可以键入损坏,但是您的默认FIFO行为需要搜索堆以按FIFO顺序查找项目。

简而言之,它可以做你所要求的,但它没有多大意义。