Стек (stack) — это структура данных, представляющая собой специализированным образом организованный список элементов. Доступ к элементам стека осуществляется по принципу LIFO (Last In First Out) — последним пришел, первым вышел. Принцип работы данной структуры данных схож с магазином автоматического огнестрельного оружия. Патроны помещаются в магазин сверху вниз, а используется всегда только верхний патрон. Давайте рассмотрим пример реализации стека на языке C#.

На рисунке ниже представлена схематичная структура стека.

Stack

Stack

У стека есть верхний элемент, с которым и выполняются все три основные манипуляции:

  • Push — добавить новый элемент в стек. При этом этот элемент станет верхним.
  • Pop — удалить верхний элемент из стека сохранив в переменную. При этом верхним станет элемент расположенный ниже удаленного.
  • Peek — прочитать верхний элемент стека, без удаления. При этом верхний элемент останется неизменным.

Теперь приступим к реализации данного класса. Мы будем использовать обобщенный класс. Для хранения данных воспользуемся списком. Данная реализация является весьма примитивной, но позволяет разобраться со структурой и алгоритмом работы данного типа данных.

Стек

Вызов

Заключение

На платформе .NET уже есть готовая реализация данной структуры данных. Она содержится в пространстве имен System.Collections и называется аналогично Stack. Исходный код доступен в репозитории github https://github.com/shwanoff/Stack.

 
×
%d такие блоггеры, как: