Стек Stack(Of T)

Последнее обновление: 30.10.2015

Класс 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

Следующий рисунок наглядно иллюстрирует работу стека в данном примере:

Stack в Visual Basic.NET
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850