美文网首页
04.跳跃表

04.跳跃表

作者: 蜗牛ICU | 来源:发表于2019-07-09 10:19 被阅读0次

1. 简介 :

   跳跃表是一种有序数据结构,他通过每个节点中维持多个执行其他节点的指针,从而达到快速访问节点的目的。
   redis 使用跳跃表作为有序集合间的底层实现之一,如果一个有序集合包含的元素数量较多,又或者有序集合中的元素的成员是较长的字符串时,redis 就会使用跳跃表作为有序号集合的底层实现。

2. 跳跃表的实现 :

   redis 的跳跃表由 redis.h/zskiplistNode和redis.h/zskiplist 两个结构定义,其中 zskiplistNode 结构用于表示跳跃表节点,而 zskiplist 结构用于保存跳跃表节点的相关信息。

跳跃表.jpg

   1. 位于图片最左侧的是 zskiplist 结构:
     header : 执向跳跃表的表头节点
     tail : 执行跳跃表的表尾节点
     level : 记录目前跳跃表内,层数最大的几点的层数
     length : 记录跳跃表的长度
   2. 位于右侧的 4 个是 zskiplistNode :
     层 : L1 ....L32 代表的是层数,每层都带有两个属性: 前进指针和跨度 。 前进指针用于访问表尾方向的其他节点,而跨度则记录了前进指针所指向的节点和当前指针的举例。 图上 连线带有数字的箭头代表的是前进指针,而数字就是跨度 。
     后退指针: 节点中 BW 字样代表后退指针。他指向为与当前节点的前一个节点,后退指针在程序从表尾向表头遍历时使用 。
     分值: 各个节点中的 1.0 2.0 3.0 是节点所保存的分值。在跳跃表中,节点按各自所保存的分值从小到大排列。
     成员对象: 各个节点中的 01 ,02 ,03 是节点所保存的成员对象。

相关文章

  • 04.跳跃表

    1. 简介 : 跳跃表是一种有序数据结构,他通过每个节点中维持多个执行其他节点的指针,从而达到快速访问节点的目的...

  • Redis Sorted-set有序集合的实现原理

    什么是跳跃表?跳跃表

  • 跳跃表

    什么是跳跃表 跳跃表(skiplist)是一种基于有序链表的扩展,简称跳表 时间和空间复杂度 插入的时间复杂度是:...

  • 跳跃表

    跳跃表是一种随机化数据结构,基于并联的链表,其效率可比拟于二叉查找树(对于大多数操作需要O(log n)平均时间)...

  • 跳跃表

    Skip List是一种随机化的数据结构,基于并联的链表,其效率可比拟于二叉查找树.基本上,跳跃列表是对有序的链表...

  • 跳跃表

    最近在看redis源码,其中看到跳跃表的部分。无奈大学期间数据结构学的基本上都快忘没了,在网上找了个介绍跳跃表的两...

  • 跳跃表

    跳跃表是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。《Skip l...

  • 跳跃表

    Skip List定义 Skip List 完整实现 下面是跳表的基本操作 节点的创建 列表的初始化列表的初始化需...

  • 跳跃表

    先看下面这个图。 这里的数据结构就是跳跃表。这个结构比较简单,在底层有一个有序链表,链表的两端有一个哨兵结点。在第...

  • 跳跃表

    redis中有序集合zset是用跳跃表实现的,所以今天学习了一下跳跃表。本文主要讲redis中跳跃表的实现。 一、...

网友评论

      本文标题:04.跳跃表

      本文链接:https://www.haomeiwen.com/subject/gvvtkctx.html