哪些数据结构可用于实现整数池?

时间:2011-06-14 11:15:42

标签: data-structures pool

这些整数可以是IP地址(DHCP)或会话ID或隧道ID(例如,在L2TP中)。 每个整数可以是空闲的或使用的。我们需要它有效地找到免费的。

还定义了最小值和最大值。

3 个答案:

答案 0 :(得分:1)

您是否希望有更多免费或更多使用的整数? 你想同时保存IP,SessIds和TunIds,还是排除其他的?

对我来说,最平衡的是树,但如果你知道最大尺寸,如果没有频繁的变化,阵列就足够了。

当你不关心某些订单时,动态列表最好。

答案 1 :(得分:1)

我会保留一份免费清单和一份二手清单。分配一个数字意味着将它从空闲列表移动到使用的列表,并反向解除分配。

维护列表会有成本,但查找免费号码会很快

答案 2 :(得分:1)

好的,因为你有最大值和最小值我有以下想法: 您可以动态维护此最大值或最小值,并具有可用整数列表。 首先,您从一个空列表和全范围开始。 当有人租用整数时,如果列表为空,则范围减小1,否则我们从列表中取出。 如果他释放他的整数,则有两种可能性:

  1. 它适合您的最大/最小范围的边缘,因此您可以增加范围大小
  2. 它远离范围,所以你把它放到列表中
  3. 这应该使您能够以低成本维持高和低的自由整数计数。 当然,您也可以尝试保存多个范围以将整数聚类在一起,但这需要更复杂的操作。