39
правок
Изменения
Дек
,→На двух стеках
* <tex>\mathtt{rightStack}</tex> {{---}} ссылка на голову.
Храним два стека — <tex>\mathtt{leftStack}</tex> и <tex>\mathtt{rightStack}</tex>. Левый стек используем для операций <tex>\mathtt{popBack}</tex> и <tex>\mathtt{pushBack}</tex>, правый — для <tex>\mathtt{popFront}</tex> и <tex>\mathtt{pushFront}</tex>. Если мы хотим работать с левым стеком и при этом он оказывается пустым, то по очереди достаем нижнюю половину элементов из правого и кладем в левый, воспользовавшись при этом локальным стеком. Аналогично с правым стеком. Худшее время работы — <tex>O(n)</tex>, однако , амортизационная стоимость операции — <tex>O(1)</tex>.
'''function''' pushBack(x : '''T'''):