[AlgoGo]跳表SkipList

2020-09-29  本文已影响0人  周瑞不是同端

跳表是什么

跳表的实现基于链表,弥补了链表不便于查找的缺点,所以跳表其实不是表(table)而是链(list)。跳表的查找时间复杂度是O(logn),但是空间复杂度为O(n)。
跳表实现的思想与二分查找类似,通过建立逐级的索引,每一级索引的节点个数为原来的1/2(自定义),在查询时先从最后一级开始逐级向下查找,等价于实现了二分查找的过程。

跳表的结构

  SkipList
  {
    int count_level;
    Node* head; // 数据为空的头节点
  }
  Node
  {
    int data;
    int max_level; //每个节点的层数随机生成
    Node* forward[max_level]; //存储每一层的下一个节点信息
  }

跳表支持的操作

上一篇 下一篇

猜你喜欢

热点阅读