Изменения

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

Стек

488 байт убрано, 16:11, 12 июня 2014
На массиве
Для стека с <tex>n</tex> элементами требуется <tex>O(n)</tex> памяти, так как она нужна лишь для хранения самих элементов.
===На массиве===
Операция вставки нового элемента применительно к стекам часто называется Перед реализацией стека еще раз выделим ключевое поле:* <tex> \mathrm {push} s [1..n]</tex> (запись в стек), а операция удаления {{---}} <tex> \mathrm {pop} </tex> (снятие со стека). Стекмассив, с помощью которого реализуется стек, способный вместить не более <tex>n</tex> элементов, можно реализовать с помощью массива <tex>s [1..n]</tex>. Этот массив обладает атрибутом <tex>s.top</tex>, представляющим собой индекс последнего помещенного в стек элемента. Стек состоит из элементов * <tex>s[1..s.top]</tex>, где <tex>s[1]</tex> {{---}} элемент на дне стека, а <tex>s[s.top]</tex> {{---}} элемент на его вершинеиндекс последнего помещенного в стек элемента.
Стек состоит из элементов <tex>s[1..s.top]</tex>, где <tex>s[1]</tex> {{---}} элемент на дне стека, а <tex>s[s.top]</tex> {{---}} элемент на его вершине.
Если <tex>s.top = 0</tex>, то стек не содержит ни одного элемента и является пустым <tex>(empty)</tex>. Протестировать стек на наличие в нем элементов можно с помощью операции{{---}}запроса <tex> \mathrm {stackEmpty} </tex>. Если элемент снимается с пустого стека, говорят, что он опустошается <tex>(underflow)</tex>, что обычно приводит к ошибке. Если значение <tex>s.top</tex> больше <tex>n</tex>, то стек переполняется <tex>(overflow)</tex>. (В представленном ниже псевдокоде возможное переполнение во внимание не принимается.)
Перед реализацией стека еще раз выделим ключевое поле:
* <tex>s.top</tex> {{---}} индекс последнего помещенного в стек элемента.
Каждую операцию над стеком можно легко реализовать несколькими строками кода:
215
правок

Навигация