Pilha C#

Resumo : neste tutorial, você aprenderá como usar C# Stack<T>para armazenar elementos em uma coleção com base no princípio LIFO (último a entrar, primeiro a sair).

Introdução ao tipo C# Stack<T>

Suponha que você tenha uma pilha de livros em sua mesa. Ao adquirir um livro novo, você o coloca no topo da pilha. O livro principal é sempre aquele que você pode escolher facilmente para ler.

Quando você quiser ler um livro, você pega aquele que está no topo da pilha, revelando o próximo livro abaixo.

Nesta analogia, a pilha de livros representa uma estrutura de dados onde você adiciona e remove livros em uma ordem do tipo primeiro a entrar, último a sair (LIFO). O primeiro livro que você coloca na pilha é o último que você remove da pilha.

Em C#, Stack<T>a classe funciona da mesma maneira que uma pilha de livros. O Stack<T>tem dois métodos principais:

  • Push()– coloca um item no topo da pilha.
  • Pop()– remove o item do topo da pilha.

O Stack<T>também possui a Countpropriedade que retorna o número de elementos da pilha.

Como Stack<T>é uma classe genérica, você armazena valores de qualquer tipo Tna pilha.

Exemplo de pilha C#<T>

O exemplo a seguir ilustra como usar a Stack<T>classe para gerenciar uma pilha de livros:

using static System.Console;

var bookStack = new Stack<string>();

var titles = new List<string>{
    "C# Tutorial",
    "Mastering LINQ",
    "A Complete Guide to EF Core"
};

// push
foreach (var title in titles)
{
    WriteLine($"Push the book '{title}' onto the stack.");
    bookStack.Push(title);
}
WriteLine($"The stack has {bookStack.Count} book(s).");

// pop
while (bookStack.Count > 0)
{
    var title = bookStack.Pop();
    WriteLine($"Pop the book '{title}' out of the stack.");
}

WriteLine($"The stack has {bookStack.Count} book(s).");Linguagem de código:  C#  ( cs )

Saída:

Push the book 'C# Tutorial' onto the stack.
Push the book 'Mastering LINQ' onto the stack.
Push the book 'A Complete Guide to EF Core' onto the stack.
The stack has 3 book(s).
Pop the book 'A Complete Guide to EF Core' out of the stack.
Pop the book 'Mastering LINQ' out of the stack.
Pop the book 'C# Tutorial' out of the stack.
The stack has 0 book(s).Linguagem de código:  texto simples  ( texto simples )

Como funciona.

Primeiro, crie uma nova pilha que armazene as strings que representam os títulos dos livros:

var bookStack = new Stack<string>();Linguagem de código:  C#  ( cs )

Segundo, inicialize uma lista de títulos de livros:

var titles = new List<string>{
    "C# Tutorial",
    "Mastering LINQ",
    "A Complete Guide to EF Core"
};Linguagem de código:  C#  ( cs )

Terceiro, itere sobre os títulos dos livros e coloque cada um deles na pilha usando um loop e método foreachPush() :

foreach (var title in titles)
{
    WriteLine($"Push the book '{title}' onto the stack.");
    bookStack.Push(title);
}Linguagem de código:  C#  ( cs )

Quarto, verifique o tamanho da pilha usando a Countpropriedade:

WriteLine($"The stack has {bookStack.Count} book(s).");Linguagem de código:  C#  ( cs )

Quinto, remova cada livro da pilha usando o Pop()método até que a pilha esteja vazia:

while (bookStack.Count > 0)
{
    var title = bookStack.Pop();
    WriteLine($"Pop the book '{title}' out of the stack.");
}Linguagem de código:  C#  ( cs )

Por fim, mostra o tamanho da pilha:

WriteLine($"The stack has {bookStack.Count} book(s).");Linguagem de código:  C#  ( cs )

Resumo

  • Use C# Stack<T>para gerenciar uma coleção de elementos na ordem LIFO (último a entrar, primeiro a sair).
  • Use Push()o método para colocar um elemento na pilha.
  • Use Pop()o método para retirar um elemento da pilha.
  • Use Counta propriedade para obter o número de elementos na pilha.