При написании различных программ программисты пользуются различными структурами данных, некоторые из них — встроенные (те, которые предлагает тот или иной язык программирования), другие же — производные, те, которые создает сам программист. Сегодня пойдет речь о производных структурах, а именно о стеке.
Стек — последовательность, в которой включение и исключение элементов осуществляется с одной стороны этой последовательности.
Стек является структурой типа LIFO (от англ. Last In, Firts Out, "Последним пришел — первым ушел"). Чтобы лучше понять, что такое стек, давайте представим, что у нас есть пять тарелок с номерами 1, 2, 3, 4, 5. Теперь мы складываем их в стопку в порядке возрастания номеров. То есть, самой нижней тарелкой будет являться тарелка с номером 1, а самой верхней — с номером 5. Получается, что тарелка № 5 вошла в стопку последней, однако когда нам понадобится несколько тарелок из этой стопки, то именно пятую мы возьмем первой.
Стек можно реализовать по-разному, на массиве, списке, и т.д. В этой статье рассмотрим стек на массиве. Реализация производится на языке C.
Первым делом напишем наш заголовочный файл, который назовем StackArray.h
Здесь мы сначала задаем максимальный размер стека, затем константы, описывающие исключительные ситуации, и переменную ошибок. Для чего это? Спросите вы. Все просто! В процессе работы со стеком могут случиться различные ситуации: переполнение массива, либо обращение к несуществующему элементу стека. Именно переменная ошибок, равная okStackArray, и будет являться признаком того, что ошибок не было.
Теперь напишем реализации функций работы со стеком.
Ну вот и все. Стек готов. Можно смело им пользоваться Вот пример программы.