Изменения

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

Стек

Нет изменений в размере, 22:57, 12 июня 2014
Нет описания правки
[[Файл: lifo.png|thumb|right|200px|Стек]]
'''Стек''' (от англ. ''stack'' {{---}} стопка) {{---}} структура данных, представляющая из себя упорядоченный набор элементов, в которой добавление новых элементов и удаление существующих производится с одного конца, называемого вершиной стека. Притом первым из стека удаляется элемент, который был помещен туда последним, то есть в стеке реализуется стратегия «последним вошел {{---}} первым вышел» (last-in, first-out {{---}} LIFO). Названия операций работы со стеком являются аллюзиями к стопкам (stacks) в реальной жизни как, например, удерживаемые пружиной стопки тарелок, используемые в кафетериях {{---}} порядок вытаскивания тарелок из стопки обратен порядку их в неё помещению, и лишь (текущая) верхняя тарелка может быть извлечена.
* <tex> \mathrm {empty} </tex> {{---}} проверка стека на наличие в нем элементов
* <tex> \mathrm {push} </tex> (запись в стек) {{---}} операция вставки нового элемента
* <tex> \mathrm {pop} </tex> (снятие со стека) {{---}} операция удаления нового элемента
* <tex> \mathrm {empty} </tex> {{---}} проверка стека на наличие в нем элементов
==Реализации==
Каждую операцию над стеком можно легко реализовать несколькими строками кода:
'''boolean''' stackEmpty(s : '''stack<T>'''):
'''return''' s.top == 0
 
'''function''' push(s : '''stack<T>''', element : '''T'''):
s.top = s.top + 1
s.top = s.top - 1
'''return''' s[s.top + 1]
 
'''boolean''' stackEmpty(s : '''stack<T>'''):
'''return''' s.top == 0
Как видно из псевдокода выше, все операции со стеком выполняются за <tex>O(1)</tex>.
215
правок

Навигация