1、跳跃表结构:跳跃表是一个包含多层的顺序链表。其结构如下图所示:
2、每一层都是有序的,最后一层包含所有的数据,而中间每层只包含部分数据。如果一个数据出现在某一层,则往下每层都包含该数据。由此,跳跃表其实就是类似一个十字链表结构。
3、跳跃表查俣挫呲蹀找:跳跃表就是用来提高查找效率的,从最顶层开始查找,如果找到节点则返回。如果节点小,则继续在该层查找。如果未找到或找到号俗劭蜾节点大,则转向下一层继续查找。比如下图中查找节点9,只需要3个步骤就能快速找到。如果是顺序链表,则需要9次。
4、添加节点:首先需要查找节点插入到合适位置,并且给该节点设醅呓择锗置合适的层数。计算节点添加到链表中哪一层是一个问题,因为层数分布的约稀疏其实对查找效率提升的更快。一种罪拈藉麝算法是:抛硬币方式,添加节点默认在第一层,至于是否添加后后面几层,每层都执行一个随机算法决定。
5、在连续计算随机数得到节点跨越层数后,我们在每一层中更新链表结构。如下图,添加节点4,其层数为3。则修改每一层4节点前后链表。
6、删除节点:已经知道节点跨越层数,所以删除该节点时,需要更新每一层的链表结构。具体过程与十字链表的更新类似。如下,我们再将节点4删除后,跳跃表结构: