c++ 跳表详细讲解
跳表建立在链表的基础之上,使用空间换时间,提高了链表的查询的效率。效果堪比BST,但是不够稳定,是redis的底层数据结构之一。
#pragma once
#pragma once
#include <vector>
#include <iostream>
#include <stdlib.h>
namespace yixiao{
class SkipList
{
public:
SkipList(size_t level = 4):level_(level)
{
head_ = new SkipNode(-1,level);
}
bool search(int key)
{
SkipNode* head = head_;
for(int i = level_-1;i>=0;--i)
{
while(head->forward_[i]!= nullptr && head->forward_[i]->key_ < key)
{
head = head->forward_