Изменения

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

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

916 байт добавлено, 22:09, 6 июня 2015
Нет описания правки
'''Node''' k = s[i]
k = s[k.prev]
push(k.prev, k.value)
 
== Альтернативная реализация ==
 
Обойдёмся без массива. Будем хранить состояния в узлах. Будем возвращать пользователю информацию о текущей вершине.<br>
У каждого узла будет <tex>2</tex> поля: значение в вершине стека и ссылка на предыдущую версию стека.<br>
* <tex> \mathrm{push}(i, x)</tex> {{---}} добавляет элемент <tex>x</tex> в стек узла <tex>i</tex>.
function push(i : Node, x : T):
k.value = x
k.prev = i
top = k
 
* <tex>\mathrm{pop}(i)</tex> {{---}} возвращает значение, хранящееся в узле <tex>i</tex> и копирует элемент, предыдущий для него.
T pop(i : Node)
Node k = i.prev
push(k.prev, k.value)

Навигация