Изменения

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

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

18 байт убрано, 13:32, 10 марта 2012
Нет описания правки
if left == <tex> \varnothing </tex>
// если левый ребенок не существует, то сделаем его новым элементом
return Deque<T>(x, child, right)
else
// иначе объеденим его с новым элементов и попытаемся добавить в дек на следующем уровне
return Deque<T>(<tex> \varnothing </tex>, child.push_front(Pair<x, left>), right)
</code>
if left <tex> \neq ~\varnothing</tex>
// если левый ребёнок не пуст, то возвращаем пару из него и нового дека без левого ребёнка
return <tex> \mathcal{h} </tex>left, Deque<T>(<tex> \varnothing </tex>, child, right)<tex> \mathcal{i} </tex>
else if child == <tex> \varnothing</tex>
// если левый ребёнок оказался пуст, и при этом ссылка на следующий дек тоже отсутсвует,
// значит, вернём пару из правого ребёнка и абсолютно пустого дека
return <tex> \mathcal{h} </tex>right, Deque<T>(<tex> \varnothing ,~\varnothing ,~\varnothing </tex>)<tex> \mathcal{i} </tex>
else
/*
* поэтому мы возвращаем right текущего дека, и пустой дек
*/
return <tex> \mathcal{h} </tex>right, Deque<T>(<tex> \varnothing ,~\varnothing ,~\varnothing </tex>)<tex> \mathcal{i} </tex>
else
/*
* нового дека, а right текущего, right'ом нового
*/
return <tex> \mathcal{h} </tex>temp.first, Deque<T>(temp.last, newDeque, right)<tex> \mathcal{i} </tex>
</code>

Навигация