Изменения

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

Персистентный стек

118 байт добавлено, 22:52, 6 июня 2015
Алгоритм
== Алгоритм ==
'''struct''' '''Node''':
'''T''' value
'''Node''' prev
=== Реализация на массиве ===
Заведем массив запросов, модифицирующих стек.<br>
s[s.top].prev = i
* <tex>\mathrm{pop}(i)</tex> {{---}} возвращает значение, хранящееся в элементе с номером <tex>i</tex> и копирует элемент, предыдущий для него,
результирующий стек будет иметь номер <tex> n + 1 </tex>.,
'''T''' pop(i : '''uint'''):
'''Node''' k = s[i]
k.value = x
k.prev = i
s.top = k '''return''' s
* <tex>\mathrm{pop}(i)</tex> {{---}} возвращает значение, хранящееся в узле <tex>i</tex> и копирует элемент, предыдущий для него.
'''pair <T, Stack>''' pop(i : '''Node'''):
'''Node''' k = i.prev
push(k.prev, k.value)
'''return''' pair(i.value, s)
== Пример ==

Навигация