Изменения

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

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

236 байт добавлено, 19:16, 8 июня 2012
Нет описания правки
* Пусть изначально у нас есть один пустой стек. Запишем его в массив.
[[Файл:стек1.png|500px|nothumb|right|]]
{| border = 1; cellspacing = 0; class="wikitable"
|- align = "center"
* Далее выполним <tex>push(1, 3)</tex>. Создается новая вершина со значением 3, ссылающаяся на 1-ую, помещаем ее во 2-ую ячейку массива:
[[Файл:стек2.png|500px|nothumb|right|]]
{| border = 1; cellspacing = 0; class="wikitable"
|- align = "center"
* Аналогично выполним <tex>push(2, 5)</tex>:
[[Файл:стек3.png|500px|nothumb|right|]]
{| border = 1; cellspacing = 0; class="wikitable"
|- align = "center"
* Выполним <tex>pop(3)</tex>. он возвращает 5 и копирует 2-ую вершину.
[[Файл:стек4.png|500px|nothumb|right|]]
{| border = 1; cellspacing = 0; class="wikitable"
|- align = "center"
* Так будет выглядеть массив после последовательности операций <tex>push(3, 6), push(5, 1), pop(4), pop(5), push(7, 9):</tex>
[[Файл:стек.png|500px|nothumb|right|]]
{| border = 1; cellspacing = 0; class="wikitable"
|- align = "center"
|7
|}
<br>
В итоге мы имеем доступ ко всем версиям стека за <tex>O(1)</tex> времени и <tex>O(n)</tex> памяти.
 
 
== См. также==
234
правки

Навигация