English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Stack é um tipo especial de coleção que armazena elementos de forma LIFO (último a entrar, primeiro a sair). O C# inclui a coleção genérica Stack<T> e a classe genérica Stack não genérica. Recomenda-se usar a coleção genérica Stack<T>.
A pilha é útil para armazenar temporariamente dados em forma LIFO e você pode desejar removê-la após recuperar o valor do elemento.
Stack<T> é uma coleção LIFO (último a entrar, primeiro a sair).
Ele está no espaço de nomes System.Collection.Generic.
Stack<T> pode conter elementos do tipo especificado. Ele oferece verificação de tipo no tempo de compilação e não realiza empacotamento./Desempacotamento, porque é genérico.
Você pode usar o método Push() para adicionar elementos. Não é permitido usar inicialização de conjunto, porque é genérico.-sintaxe initializer)
Você pode recuperar elementos usando os métodos Pop() e Peek(). Não suporta índices.
Você pode criar objetos especificando o tipo de elemento armazenado no Stack<T> usando o parâmetro de tipo. O exemplo a seguir usa o método Push() para criar e adicionar elementos no Stack <T>. A pilha permite null (para tipos de referência) e valores repetidos.
Stack<int> myStack = new Stack<int>(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); foreach (var item in myStack) Console.Write(item + "," //Imprimir4,3,2,1,
Você também pode criar uma pilha a partir de um array, conforme exemplo a seguir.
int[] arr = new int[]{ 1, 2, 3, 4}; Stack<int> myStack = new Stack<int>(arr); foreach (var item in myStack) Console.Write(item + "," //Imprimir4,3,2,1,
Atributo | Uso |
---|---|
Count | Retorna o total de elementos na pilha. |
Método | Uso |
---|---|
Push(T) | Inserir um item no topo da pilha. |
Peek() | Retornar o item no topo da pilha. |
Pop() | Remover e retornar o item do topo da pilha. |
Contains(T) | Verificar se há itens na pilha. |
Clear() | Remover todos os itens da pilha. |
O método Pop() retorna o último elemento e o remove da pilha. Se a pilha estiver vazia, lançará um InvalidOperationException. Portanto, verifique sempre o número de elementos na pilha antes de chamar o método Pop().
Stack<int> myStack = new Stack<int>(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); Console.Write("Número de elementos na pilha: {0}", myStack.Count); while (myStack.Count > 0) Console.Write(myStack.Pop(), + "," Console.Write("Número de elementos na pilha: {0}", myStack.Count);
Número de elementos na pilha:4 4,3,2,1, Número de elementos na pilha: 0
O método Peek() retorna o último valor adicionado na pilha, mas não o remove. Chamar o método Peek() em uma pilha vazia lançará um InvalidOperationException. Portanto, sempre verifique os elementos na pilha antes de usar o método Peek() para pesquisar elementos.
Stack<int> myStack = new Stack<int>(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); Console.Write("Número de elementos na Pilha: {0}", myStack.Count);// Saída 4 if(myStack.Count > 0){ Console.WriteLine(myStack.Peek()); // Saída 4 Console.WriteLine(myStack.Peek()); // Saída 4 } Console.Write("Número de elementos na Pilha: {0}", myStack.Count);// Saída 4
O método Contains() verifica se o elemento especificado existe na coleção Stack. Se existir, retorna true, caso contrário, retorna false.
Stack<int> myStack = new Stack<int>(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); myStack.Contains(2); // Retornar true myStack.Contains(10); // Retornar false