Изменения

Перейти к: навигация, поиск

Список с пропусками

62 байта убрано, 00:08, 21 марта 2019
Нет описания правки
* <tex>\{1, 0\}</tex> {{---}} <tex>\infty</tex> (если разрешить добавление новых уровней при проталкивании элемента после броска монетки; иначе <tex>O(n)</tex>)
===Удаление элемента===
Алгоритм удаления достаточно тривиален.
# Найти удаляемый элемент
# Удалить его со всех уровней
 
==Псевдокод==
Наглядный, но не очень эффективный по памяти вариант списка с пропусками.
 
В узлах списка хранятся:
* <tex>next</tex> {{---}} следующий узел
* <tex>down</tex> {{---}} тот же узел на следующем уровне
* <tex>data</tex> {{---}} данные типа T
* <tex>key</tex> {{---}} ключ типа K
 
Вставка:
<code>
'''node''' insert ('''node''' i, '''K''' key, '''T''' data)
'''while''' i.key <= key <font color=darkgreen>// Ищем подходящее место</font>
'''void''' insert ('''list''' skip_list, '''K''' key, '''T''' data) <font color=darkgreen>// Обёрточка</font>
insert(skip_list.head, key, data)
</code>===Удаление:элемента===Алгоритм удаления достаточно тривиален. # Найти удаляемый элемент# Удалить его со всех уровней<code>
'''void''' erase ('''node''' i, '''K''' key)
'''if''' i == ''null''
'''void''' erase ('''list''' skip_list, '''K''' key) <font color=darkgreen>// Обёрточка</font>
erase(skip_list.head, key)
 ==Псевдокод==Наглядный, но не очень эффективный по памяти вариант списка с пропусками. В узлах списка хранятся:* <tex>next</tex> {{---}} следующий узел* <tex>down</tex> {{---}} тот же узел на следующем уровне* <tex>data</tex> {{---}} данные типа T* <tex>key</codetex> {{---}} ключ типа K 
==Применение==
* Базы данных
390
правок

Навигация