SkipList的操作

表(SkipList)及ConcurrentSkipListMap源码解析查找

查找就是给定一个key,查找这个key是否出现在跳跃表中,如果出现,则返回其值,如果不存在,则返回不存在。我们结合一个图就是讲解查找操作,如下图所示:

如果我们想查找19是否存在?如何查找呢?我们从头结点开始,首先和9进行判断,此时大于9,然后和21进行判断,小于21,此时这个值肯定在9结点和21结点之间,此时,我们和17进行判断,大于17,然后和21进行判断,小于21,此时肯定在17结点和21结点之间,此时和19进行判断,找到了。具体的示意图如图所示:

表(SkipList)及ConcurrentSkipListMap源码解析插入

插入包含如下几个操作:1、查找到需要插入的位置   2、申请新的结点    3、调整指针。

我们结合下图进行讲解,查找路径如下图的灰色的线所示  申请新的结点如17结点所示, 调整指向新结点17的指针以及17结点指向后续结点的指针。这里有一个小技巧,就是使用update数组保存大于17结点的位置,update数组的内容如红线所示,这些位置才是有可能更新指针的位置。

表(SkipList)及ConcurrentSkipListMap源码解析删除

删除操作类似于插入操作,包含如下3步:1、查找到需要删除的结点 2、删除结点  3、调整指针

转载于:https://www.cnblogs.com/diegodu/p/7339034.html

跳表 skipList相关推荐

  1. 每日一博 - 如何理解跳表(SkipList)

    文章目录 什么是跳跃表SkipList 跳表关键字 Why Skip List Code 跳表-查询 跳表-删除 跳表-插入 小结 完整Code 什么是跳跃表SkipList 跳跃表(简称跳表)由美国 ...

  2. java数据结构红黑树上旋下旋_存储系统的基本数据结构之一: 跳表 (SkipList)

    在接下来的系列文章中,我们将介绍一系列应用于存储以及IO子系统的数据结构.这些数据结构相互关联又有着巨大的区别,希望我们能够不辱使命的将他们分门别类的介绍清楚.本文为第一节,介绍一个简单而又有用的数据 ...

  3. 跳表-skiplist的简单实现

    文章目录 1.什么是跳表-skiplist 2.skiplist的效率如何保证? 3.skiplist的实现 4.skiplist跟平衡搜索树和哈希表的对比 1.什么是跳表-skiplist skip ...

  4. 为啥 redis 使用 跳表 (skiplist) 而不是使用 red-black?

    基本结论 1.实现简单. 2.区间查找快.跳表可以做到O(logn) 的时间复杂度定位区间的起点,然后在原始链表中顺序往后遍历就可以了. 3.并发环境优势.红黑树在插入和删除的时候可能需要做一些reb ...

  5. 什么是跳表 skiplist ?

    什么是跳表 skiplist ? 文章目录 什么是跳表 skiplist ? 特性 实现 结构 查找 插入 删除 完整代码 参考 跳表可以快速地查找.插入.删除.据说可以替代红黑树.Redis中的有序 ...

  6. 跳表SkipList

    1.聊一聊跳表作者的其人其事 2. 言归正传,跳表简介 3. 跳表数据存储模型 4. 跳表的代码实现分析 5. 论文,代码下载及参考资料 <1>. 聊一聊作者的其人其事  跳表是由Will ...

  7. 数据映射--跳表(skiplist)

    http://blog.sina.com.cn/s/blog_693f08470101n2lv.html 本周我要介绍的数据结构,是我非常非常喜欢的一个数据结构,因为咱也是吃过平衡二叉树的苦的人啊T_ ...

  8. 一种数据结构 跳表skiplist

    跳表是平衡树的一种替代的数据结构,但是和红黑树不相同的是,跳表对于树的平衡的实现是基于一种随机化的算法的,这样也就是说跳表的插入和删除的工作是比较简单的. 下载地址 : http://download ...

  9. 数据结构--跳表SkipList

    对单链表查找一个元素的时间复杂度是 O(n) 通过对链表建立多级索引的结构,就是跳表,查找任意数据.插入数据.删除数据的时间复杂度均为 O(log n) 前提:建立了索引,用空间换时间的思路 (每两个 ...

  10. java 跳表_跳表 skiplist

    最初知道跳表(Skip List)是在看redis原理的时候,redis中的有序集合使用了跳表作为数据结构.接着就查了一些资料,来学习一下跳表.后面会使用java代码来实现跳表. 跳表简介 跳表由Wi ...

最新文章

  1. WAIC汇聚全球顶级科学家,畅谈人工智能的未来挑战与突破
  2. Rational Rose 2003 下载、破解及安装方法(图文)
  3. C 语言中std::array的神奇用法总结
  4. 模拟退火解决TSP问题
  5. Java如何比较两个数组是否相等
  6. Mac OS修改Mac地址
  7. 《中國姓氏大全》【带拼音】
  8. node.js连接数据库实现注册登录拼接添加到页面 (增删改查)
  9. 给销售组织分配分销渠道
  10. TFTLCD原理与驱动与指令介绍
  11. 计算机无法备份,win7不能备份系统如何解决?win7不能备份系统的解决方法
  12. JVM结构和JVM的架构模型以及JAVA生命周期介绍
  13. 工业物联网案例:注塑机PLC联网监控解决方案
  14. Kali无线渗透获取宿舍WiFi密码(WPA)
  15. 磨金石教育设计干货分享|20个海报设计小技巧,果断打包带走
  16. Win11系统默认英文字体怎么修改成为中文
  17. Echarts水波图实现
  18. 项目使用Spring Cloud做配置管理
  19. 单片机p0口接8个LED c51语言,51 单片机:在 P0 口接上 8 个 LED,实现每次亮两个灯的流水灯...
  20. 计算机英语过级考试开挂,大学生注意了!教你一招四六级开挂指南 | 你的英语听力还有救...

热门文章

  1. 在微信小程序中绘制图表(part1)
  2. 微软Azure Services Bus中的工作流
  3. 【超清视频】SCCM2012精讲系列课程03:SCCM2012的基础环境初始化(一)
  4. 红帽RHEL5U4平台实现pppoe+freeradius+mysql认证服务器(一)
  5. [style] visibility
  6. MySQL 百万级数据,怎么做分页查询?
  7. 程序员才懂的 1 首歌和 6 张图
  8. JVM 大厂面试都会问,都会这么问,你能顶住么?
  9. 从Face ID说起,浅析人脸识别之刷脸技术
  10. Android性能优化系列---管理你的app内存(二)