Изменения

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

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

31 байт добавлено, 21:52, 22 марта 2019
Удаление элемента
===Удаление элемента===
Алгоритм удаления достаточно прост: # Найти удаляемый Для того, чтобы удалить элемент# Удалить его со всех уровней ====Псевдокод====Функция <tex>\mathtt{erase}</tex> удаляет вершину <tex>i</tex> из списка с пропускаминеобходимо вызвать рекурсивную функцию, которая в каждом уровне, подобно поиску, найдёт позицию, где должен был стоять элемент '''function''' erase Во время рекурсии если это самый нижний уровень, то удаляем элемент из списка ('''node''' i, '''K''' keyне забывая при этом сохранить связность списка) '''if''' i == ''null'' '''return''' '''while''' i.key < key <font color=darkgreen>// Ищем Если это не это первый уровень, то рекурсивно вызовем функцию от уровня ниже, а также удалим элемент</font> i = iв текущем уровне.next() erase(i.downПосле удаления элемента могло так получить, key) <font color=darkgreen>// Удаляем с нижних что несколько верхних уровней</font> '''if''' i.key = key <font color=darkgreen>// Если ключ совпадает</font> '''delete'''перестали содержать какие-либо элементы, тогда необходимо удалить эти уровни (iкроме первого) <font color=darkgreen>// удаляем , и с этого не забыть вернуть ссылку на начало самого верхнего уровня</font> Для после того, чтобы удалить элемент с ключом <tex>\mathtt{key}</tex> из списка с пропусками <tex>\mathtt{list}</tex> достаточно вызвать функцию <tex>\mathtt{erase}</tex> следующим образом:  erase(listкак удалили остальные уровни.head(), key)
==Применение==
390
правок

Навигация