Method: DSkipList#delete

Defined in:
lib/dskiplist.rb

#delete(search_key) ⇒ Object



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/dskiplist.rb', line 87

def delete(search_key)
  update = []
  x = @header
  @level.downto(0) do |i|
    while x.forward[i] and x.forward[i].key < search_key
      x = x.forward[i]
    end
    update[i] = x
  end
  x = x.forward[0]
  if x and x.key == search_key
    0.upto(x.forward.length - 1) do |i|
        update[i].forward[i] = x.forward[i]
    end
    return true
  else
    return false
  end
end