Добрый вечер. Сегодня узнал, что такое стек, но не понял некоторые вещи.
Я знаю, что объект, который был добавлен 1ым, уберется последним (как стопка с грязными тарелками, например).
Представьте стек, содержащий 5 элементов, мне нужен самый нижний. Я убираю 4 элемента и достаю нужный.
А что делать, если элементы постоянно добавляются? Т.е я убрал 2 элемента, добавились еще 2 и так до бесконечности.
Каким образом добраться до самого нижнего элемента?
В этом и есть суть стека.
Поэтому и существуют разные структуры данных в зависимости от потребностей: стек (LIFO/FILO), очередь (FIFO), хэшмэпы, массивы, списки...
А что делать, если элементы постоянно добавляются? Т.е я убрал 2 элемента, добавились еще 2 и так до бесконечности. Каким образом добраться до самого нижнего элемента?
А если серьезно, то стек работает по правилу LIFO (последним пришёл — первым ушёл) как патроны в магазине автомата. Еще есть очередь (как в овощном магазине) там действует правило FIFO (первым пришёл — первым ушёл) именно это вам и надо судя из примера.
Так же есть еще массивы и списки где произвольный доступ к элементам по индексу
Позвольте не согласиться с предыдущими ораторами.
В ЯП Forth достать n-й элемент из глубины стека легко и для этого есть слово PICK.
В принципе зная указатель вершины стека, можно легко вычислить указатель требуемого элемента, а далее дело техники (C, asm, Forth ... с этим легко справятся). ;)