:param key: Key to remove from list. >>> skip_list = SkipList() >>> skip_list.insert(2, "Two") >>> skip_list.insert(1, "One") >>> skip_list.insert(3, "Three") >>> list(skip_list) [1, 2, 3] >>> skip_list.delete(2) >>> list(skip
(self, key: KT)
| 161 | return None, update_vector |
| 162 | |
| 163 | def delete(self, key: KT): |
| 164 | """ |
| 165 | :param key: Key to remove from list. |
| 166 | |
| 167 | >>> skip_list = SkipList() |
| 168 | >>> skip_list.insert(2, "Two") |
| 169 | >>> skip_list.insert(1, "One") |
| 170 | >>> skip_list.insert(3, "Three") |
| 171 | >>> list(skip_list) |
| 172 | [1, 2, 3] |
| 173 | >>> skip_list.delete(2) |
| 174 | >>> list(skip_list) |
| 175 | [1, 3] |
| 176 | """ |
| 177 | |
| 178 | node, update_vector = self._locate_node(key) |
| 179 | |
| 180 | if node is not None: |
| 181 | for i, update_node in enumerate(update_vector): |
| 182 | # Remove or replace all references to removed node. |
| 183 | if update_node.level > i and update_node.forward[i].key == key: |
| 184 | if node.level > i: |
| 185 | update_node.forward[i] = node.forward[i] |
| 186 | else: |
| 187 | update_node.forward = update_node.forward[:i] |
| 188 | |
| 189 | def insert(self, key: KT, value: VT): |
| 190 | """ |