func (list *SkipList) Remove(key int) bool {
list.mut.Lock()
defer list.mut.Unlock()
//1.查找删除节点
node := list.head
remove :=make([]*SkipListNode, list.level, list.level)
var target *SkipListNode
for index :=len(node.next) -1; index >=0; index -- {
for {
node1 := node.next[index]
if node1 == list.tail || node1.key > key{
break
}else if node1.key == key {
remove[index] = node//找到啦
target = node1
break
}else {
node = node1
}
}
}
//2.执行删除
if target != nil {
for index, node1 :=range remove {
if node1 != nil {
node1.next[index] = target.next[index]
}
}
list.length --
return true
}
return false
}