6

Стек (stack) на языке C#

Стек (stack) на языке C# Программирование, Стек, Структуры Данных, Stack, Длиннопост

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

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

Стек (stack) на языке C# Программирование, Стек, Структуры Данных, Stack, Длиннопост

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

Push — добавить новый элемент в стек. При этом этот элемент станет верхним.

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

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

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

Класс стека

Стек (stack) на языке C# Программирование, Стек, Структуры Данных, Stack, Длиннопост
Стек (stack) на языке C# Программирование, Стек, Структуры Данных, Stack, Длиннопост
Стек (stack) на языке C# Программирование, Стек, Структуры Данных, Stack, Длиннопост

Работа со стеком

Стек (stack) на языке C# Программирование, Стек, Структуры Данных, Stack, Длиннопост

Результат работы приложения

Стек (stack) на языке C# Программирование, Стек, Структуры Данных, Stack, Длиннопост

Заключение

На платформе .NET уже есть готовая реализация данной структуры данных. Она содержится в пространстве имен System.Collections и называется аналогично Stack. Я не претендую на правильность, оптимальность и красоту реализации. Единственная цель, которую я преследую, поделиться полезной информацией о программировании, которая может кому-то пригодиться. В данном примере просто показана идея такой структуры данных как стек.


Источник https://shwan.ru/stack/

Найдены дубликаты

+4

Но зачем на пикабу то? Я понимаю какие-нибудь интересные кейсы рассматривать типа процедурной генерации облаков (был пост) или еще какие моменты, которые могут быть интересны (просто картинки посмотреть) даже тем кто далек от программирования, но основы, которые гуглятся...

Иллюстрация к комментарию
раскрыть ветку 1
0

кроме всего прочего, этот код ещё и неправильный. :)

+3

Вообще практически во всех подобных статьях обычно не хватает пункта с объяснением "а нахера оно мне, собственно, надо? где я это могу использовать и для каких задач?". Вспоминаю, как сам только начинал изучать язык, и из-за отсутствия такой информации, статьи часто пролетали мимо мозга.
Получается, читатель либо ты и так знает это всё, либо не понимает, для каких случаев это вообще нужно.

0

Со времен дядюшки Нортона мало кто говорит, что стек - это стопка, класть и забирать можно только сверху.

раскрыть ветку 1
0

Стопка книг или тарелок, или горшков из операции Ы)

0
Что за дискриминация, почему нельзя null добавлять?
раскрыть ветку 1
0
Наверно этот стэк не может содержать nullable типы , почему я незнаю :)
-2

шел 2018 год, некоторые до сих пор используют венгерскую нотацию и ее подвиды...

раскрыть ветку 2
-1

А если по подробнее? Что считается трендовым в 2018? )

-1

Это ж учебный в вакууме код, Карл! Какие имена предметной области стоило бы выбрать?

Похожие посты
Похожие посты не найдены. Возможно, вас заинтересуют другие посты по тегам: