Изменения

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

Персистентные структуры данных

6 байт добавлено, 19:26, 2 апреля 2015
Преобразование списка в персистентный за O(1)
Эта структура работает так. Например, мы знаем, что текущая первая версия и идем по нашему списку слева направо от первого узла к узлу <tex>X</tex>, а затем хотим перейти к следующему узлу. В «толстом» узле <tex>X</tex> мы выбираем нужную нам версию и далее следуем по ссылкам.
[[Файл:Список1.png|700px]]
Пусть мы хотим добавить еще один элемент между узлами <tex>X</tex> и <tex>Y</tex>, но проблема в том, что у <tex>X</tex> и <tex>Y</tex> уже есть вторая версия, добавлять третью невыгодно. Поэтому более двух версий добавлять не будем. Используем метод копирования пути. Скопируем узлы <tex>X</tex> и <tex>Y</tex>, начиная с их третьей версии, и свяжем новые узлы с исходным списком. Для этого добавим вторые версии предыдущему перед <tex>X</tex> и последующему после <tex>Y</tex> узлам и свяжем эти узлы соответствующими ссылками. Так все версии остаются доступными.
142
правки

Навигация