快手视频|用java实现跳表SkipList( 二 )
如果stack中都没有了还要升级 , 说明整个跳表网结构要升一层 , 只需要new一个头节点 , 把老的头节点设置到新头节点的down就行 , 在把new出来的node设置到新节点的right , 新的一层就完成了 。
通过利用findPredecessor和栈就很简单的实现了升级 , 所以添加过程还是比较简单的 。
跳表的删除实现直接上删除方法源码 , 源码如下图:
如果理解了添加方法中的升级方法 , 那么删除方法就比较简单了 , 还是利用findPredecessor找到前置节点 , 然后验证前置节点的右节点 , 如果右节点的值等于value就把右节点从链表中移除 。
同样由于在findPredecessor方法中填充了stack , 所以只要验证stack中的右节点然后进行移除就行 , 删除方法就完成了 。
跳表测试测试结果如下图:
通过实现print打印了跳表的网图 , 看打印的结构基本完成 , 算是成功了 , 从打印结果来看 , 比如我要查96只需要2次比较 , 即使要查的数据刚好是链表中的最后一个也没有几个 。
总结SkipList实现过程还是比较艰难 , 不过总算是写出来了 , 主要在于findPredecessor方法 , findPredecessor既能找到前置节点 , 实际上也找到了每一层的前置节点 , 然后不管是添加还是删除就比较简单了 。
Java程序员日常学习笔记 , 如理解有误欢迎各位交流讨论!
【快手视频|用java实现跳表SkipList】
推荐阅读
- 计算机专业大一下学期,该选择学习Java还是Python
- 未来想进入AI领域,该学习Python还是Java大数据开发
- 视频小白们的外挂装备:百视悦R5监视器+T2提词器套装上手
- 学习大数据是否需要学习JavaEE
- 充值|APP会员充值需注意这三点
- 原来华为手机拍视频还能添加字幕,方法很简单,一学就会
- 手机照片、视频怎样添加文字?原来很简单,4种方法一分钟搞定
- 为什么录视频不好看?vivo X60 Pro或许有答案
- Galaxy S21系列近在咫尺 三星放出预热视频
- 从事Java开发时发现基础差,是否应该选择辞职自学一段时间
