Класс Stack(Of T)
представляет набор однотипных объектов, которая использует алгоритм LIFO ("последний вошел - первый вышел"),
то есть структуру стек.
С помощью такой организации элементов каждый следующий добавленный элемент помещается поверх предыдущего. Извлечение из стека производится в
обратном порядке - извлекается тот элемент, который находится выше всех в стеке и был добавлен позже всех.
Среди методов класса Stack можно выделить два основных, с помощью которых можно управлять добавлением и извлечением элементов:
Push: добавляет элемент в стек на первое место
Pop: извлекает и возвращает первый элемент из стека
Peek: просто возвращает первый элемент из стека без его удаления
Посмотрим на примере:
Module Module1 Sub Main() Dim nums As New Stack(Of Integer)() nums.Push(3) 'в стеке 3 nums.Push(5) 'в стеке 5, 3 nums.Push(8) 'в стеке 8, 5, 3 'так как вверху стека будет находиться число 8, то оно и извлекается Dim stackElement As Integer = nums.Pop() 'в стеке 5, 3 Console.WriteLine(stackElement) Dim people As New Stack(Of Person)() people.Push(New Person() With {.Name = "Tom"}) people.Push(New Person() With {.Name = "Bill"}) people.Push(New Person() With {.Name = "John"}) For Each p As Person In people Console.WriteLine(p.Name) Next 'Извлекаем из стека первый элемент Dim john As Person = people.Pop() 'теперь в стеке Bill, Tom Console.WriteLine(john.Name) Console.ReadLine() End Sub Class Person Public Property Name() As String End Class End Module
Следующий рисунок наглядно иллюстрирует работу стека в данном примере: