Data structures skiplist-我真的需要一个解释,它是如何插入和删除的

Data structures skiplist-我真的需要一个解释,它是如何插入和删除的,data-structures,skip-lists,Data Structures,Skip Lists,我真的不明白这张单子的可能性。除了“我们必须检查不超过n/2+1个节点(其中n是列表的长度)之外,还需要给每四个节点一个前四个指针(图1c),检查的节点不超过n/4+2个”。 我在下面的链接中读到了这句话:ftp://ftp.cs.umd.edu/pub/skipLists/skiplists.pdf跳过列表在它们的应用程序中得到了很好的解释。如果您有关于数据结构本身的特定问题,请随时提问。麻省理工学院关于跳过列表的讲座:这里可以找到一个更容易理解的解释:您不理解的是,每个节点在级别1上都有一个

我真的不明白这张单子的可能性。除了“我们必须检查不超过n/2+1个节点(其中n是列表的长度)之外,还需要给每四个节点一个前四个指针(图1c),检查的节点不超过n/4+2个”。
我在下面的链接中读到了这句话:ftp://ftp.cs.umd.edu/pub/skipLists/skiplists.pdf

跳过列表在它们的应用程序中得到了很好的解释。如果您有关于数据结构本身的特定问题,请随时提问。

麻省理工学院关于跳过列表的讲座:

这里可以找到一个更容易理解的解释:

您不理解的是,每个节点在级别1上都有一个链接。也就是说,在最底层,数据结构本质上是一个链表。使用此函数搜索节点当然是一个O(n)操作

跳过列表的每个节点至少有一个链接:位于级别1的链接。平均而言,一半的节点在级别2上也有链接。如果这是存在链接的最高级别,则可以在O(n/2)中找到任意节点。基本上,您会跟随第二级节点,直到找到您要查找的项目,或者直到找到一个值大于您要查找的项目的节点。此时,您将转到级别1节点,并从上一个节点(即,比您要查找的节点小的节点)向前搜索

同样,平均而言,1/4的节点在第3级有链接。使用这些,您可以在O(n/4)中找到任意节点。首先搜索级别3节点,直到找到该节点或经过该节点,然后从该点下拉到级别2节点,如果在级别2未找到该节点,则下拉到级别1节点

如果按照数学计算,您可以看到,如果您的最大级别为
m
,那么只要跳过列表中的节点数小于
2^m
,您的平均摊销搜索时间将为O(log2(n)),其中
n
是列表中的项目数

因此,跳过列表节点的结构如下所示:

SkiplistNode
{
    int level;
    SomeType data; // the data held in the node
    SkiplistNode* forwards[]; // an array of 'level' forward references
}
如果节点的
级别
值为1,则
转发
数组中只有一项。如果是4级,那么将有四个条目:4、3、2和1级各一个条目

事实证明,
转发
数组的平均大小是2。它遵循的是1+1/2+1/4+1/8+1/16,+1/32,即:

Every node has a link at level 1
1/2 of the nodes have a link at level 2
1/4 of the nodes have a link at level 3
1/8 of the nodes have a link at level 4
etc.

现在更清楚了吗?

我猜这是和家庭作业有关的事情。你能把你的问题说得更清楚吗?事实上,这不是一个家庭作业,我只是错过了lec,我正在努力理解跳过列表的好处,尤其是它是如何插入和删除的。我在一篇跳过列表的论文中读到了这句话。我只需要概念,,,而不是实现如果你错过了一次讲座,试图赶上,那还是作业。谢谢你的帮助。我对插入和删除函数有问题,我试图理解它们,特别是获取随机级别的部分