微信公众号:算法面试题
扫码开启算法之旅
总结:
跳表具有如下性质:
(1) 由很多层结构组成
(2) 每一层都是一个有序的链表
(3) 最底层(第0层)的链表包含所有元素
(4) 如果一个元素出现在第i层中,则它在第0到第i-1层也都会出现
(5) 跳表是一种随机化的数据结构(通过掷硬币的过程可以看出)
点评:跳表是一种应用广泛的数据结构,著名的Redis与LevelDB系统的源码中,均可看到跳表的踪影。
代码实现
下面是作者用JavaScript实现的一个跳表,包括查找、插入和删除操作。
1//定义跳表结点
2function Node(key, value) {
3 this.key = key;
4 this.value = value;
5 //next指针数组
6 //此元素跨越多少层,next数组就含有多少指向下一结点的指针
7 this.next = [];
8}
9
10//跳表
11class SkipList {
12 constructor() {
13 //头结点不存值
14 this.head = new Node(undefined, undefined);
15 //初始时,跳表层数为0
16