【发布时间】:2014-06-17 23:03:43
【问题描述】:
假设我有一个跳过列表,顺序为 3。
HEAD
level 3 |--------------------------------------------> X
| |---|
level 2 | -------------------> | | ----------------> X
| |---| |---| |---| |---|
level 1 | -> | | -> | | -> | | -> | | -------> X
| |---| |---| |---| |---|
| | 20| |100| |150| |200|
| |---| |---| |---| |---|
minlimit = ceil(order/2) - 1 = 1
maxlimit = order - 1 = 2
所以本质上它是1-2 skip-list。
如果我想通过自上而下的插入算法插入50,它会在落入Head和150之间的间隙之前提高节点100的级别,并在@之前插入50 987654328@。现在将发生违规,因为在100 和150 之间没有节点,而在该间隙中应该至少有一个高度为h-1 的节点作为minlimit=1。
我做错了什么?
【问题讨论】:
-
我们可以看看你的代码吗?
-
代码正在做我上面所说的。我认为代码无关紧要,因为问题是关于算法,而不是实现,我只想知道我在这个特定场景中执行的步骤是否正确。不过如果你觉得很重要,我可以发在这里。
标签: data-structures skip-lists