@Anton_repr

Как работает стек?

Добрый вечер. Сегодня узнал, что такое стек, но не понял некоторые вещи.
Я знаю, что объект, который был добавлен 1ым, уберется последним (как стопка с грязными тарелками, например).
Представьте стек, содержащий 5 элементов, мне нужен самый нижний. Я убираю 4 элемента и достаю нужный.
А что делать, если элементы постоянно добавляются? Т.е я убрал 2 элемента, добавились еще 2 и так до бесконечности.
Каким образом добраться до самого нижнего элемента?
  • Вопрос задан
  • 451 просмотр
Решения вопроса 3
samodum
@samodum
Какой вопрос - такой и ответ
В этом и есть суть стека.
Поэтому и существуют разные структуры данных в зависимости от потребностей: стек (LIFO/FILO), очередь (FIFO), хэшмэпы, массивы, списки...
Ответ написан
Комментировать
myjcom
@myjcom
А что делать, если элементы постоянно добавляются? Т.е я убрал 2 элемента, добавились еще 2 и так до бесконечности. Каким образом добраться до самого нижнего элемента?

Персистентные структуры данных ----> Персистентный стек в частности
Ответ написан
Комментировать
@krka92
Стек для того и нужен, чтобы забирать верхнюю тарелку. И неважно,что они еще добавляются.
А чтобы забрать нижнюю тарелку нужна очередь.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
saboteur_kiev
@saboteur_kiev Куратор тега Программирование
software engineer
Стек для того и нужен, что бы не брать значения "снизу".
Стек полезен для рекурсии.
Ответ написан
Комментировать
@evgeniy_lm
АКМ это простой преобразователь стека в очередь

А если серьезно, то стек работает по правилу LIFO (последним пришёл — первым ушёл) как патроны в магазине автомата. Еще есть очередь (как в овощном магазине) там действует правило FIFO (первым пришёл — первым ушёл) именно это вам и надо судя из примера.
Так же есть еще массивы и списки где произвольный доступ к элементам по индексу
Ответ написан
Комментировать
@ilya73
Позвольте не согласиться с предыдущими ораторами.
В ЯП Forth достать n-й элемент из глубины стека легко и для этого есть слово PICK.
В принципе зная указатель вершины стека, можно легко вычислить указатель требуемого элемента, а далее дело техники (C, asm, Forth ... с этим легко справятся). ;)
Ответ написан
Комментировать
@Stasik88
Я так и знал!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы