Изменения

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

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

1219 байт добавлено, 19:44, 22 марта 2019
Построение
==Построение==
[[Файл:SimpleList.png|thumb|600px|Односвязный отсортированный список]]
 
[[Файл:SkipList.png|thumb|600px|Получившийся список с пропусками]]
 
Допустим, что нам задан односвязный отсортированный список и мы хотим построить на его основе список с пропусками, позволяющий в среднем за <tex>O(\log{n})</tex> времени выполнять операции добавления, удаления и поиска элементов.
На самом нижнем уровне списка с пропусками мы расположим исходный список. На втором уровне <tex>-</tex> всё элементы с чётными номерами, причём каждый элемент будет ссылаться на соответствующий ему элемент на нижнем уровне. Таким же образом построим и третий уровень, куда будем добавлять только те элемента, номера которых кратны четырём. Аналогично построим и последующие уровни.
[[Файл:SimpleList.png]]====Псевдокод====
Каждый уровень списка с пропусками содержит отсортированный односвязный список, у которое есть начало <tex>head</tex> и конец <tex>tail</tex>. Для выполнения операций на списке с пропусками необходимо передавать в качестве аргумента ссылку на начало односвязного списка, расположенного на самом верхнем уровне.
На самом нижнем уровне Элементы односвязного списка с пропусками мы расположим исходный список. На втором уровне состоят из вершин <tex>node</tex>, у которых есть <tex>3</tex> поля:* <tex>next</tex> <tex>-</tex> всё элементы с чётными номерамиссылка на следующий элемент списка* <tex>key</tex> <tex>-</tex> ключ, причём каждый элемент будет ссылаться который хранится в данной вершине* <tex>down</tex> <tex>-</tex> ссылка на соответствующий ему соответственный элемент на нижнем уровне. Таким же образом построим и третий уровень, куда будем добавлять только те элемента, номера которых кратны четырём. Аналогично построим и последующие уровни. [[Файл:SkipList.png]]лежащий уровнем ниже
390
правок

Навигация