Класс 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
Следующий рисунок наглядно иллюстрирует работу стека в данном примере: