Se você entendeu o conceito de filas, não terá qualquer dificuldade para entender as pilhas. Aqui vamos imaginar uma pilha de cartas de baralho, ok? Se formos adicionando cartas uma em cima da outra, teremos uma pilha. No entanto, se em determinado momento quisermos começar a retirar as cartas, uma a uma, a última carta colocada será a primeira a ser retirada. Este é o conceito de pilha! Enquanto nas filas o primeiro elemento a chegar era o primeiro a sair, nas pilhas o primeiro elemento a chegar é o último a sair, pois todos os outros estarão em cima dele e precisarão ser retirados primeiro.
Para criarmos essa estrutura em C#, utilizamos o comando Stack, vejam:
O foreach, no final do código, é para realizar a impressão da pilha. Vejamos como ela está:
Percebam que o último elemento a ser adicionado é o primeiro a aparecer, ou seja, o primeiro que sairá da pilha caso retiremos algum elemento. Essa é a grande diferença entre fila e pilha.
Exibindo o primeiro elemento da pilha
Para exibir o primeiro elemento de uma pilha o método a ser chamado é o mesmo do utilizado nas filas, o Peek.
Removendo um elemento da pilha
O comando que remove elementos de uma pilha é o Pop. Vejam um exemplo de sua utilização abaixo:
Inseri dois foreach, um antes da remoção e outro logo em seguida, para demonstrar, no Console, a alteração na pilha. Vejamos como ficou:
Notem que a primeira carta, que foi a última a ser inserida, foi removida.
Contando elementos de uma pilha
Assim como numa fila, aqui também temos o método Count, que nos retorna um inteiro com o número de elementos presentes na pilha.
Aí está nossa variável contendo o número de elementos presentes na pilha.
Excluindo todos os elementos da pilha
Para limparmos toda a pilha, deixando-a sem qualquer elemento, devemos utilizar o método Clear(), exatamente como fizemos na fila.
Com o foreach do final do código, vamos tentar exibir a pilha:
Está vazia, ou seja, os elemento foram corretamente removidos.
Bem, estas foram as funções que separei sobre pilhas. Assim como as filas, são muito utilizadas em jogos, mas seu uso é totalmente genérico. Seguramente você as usará em breve!
Com pilhas eu encerrei essa parte básica sobre C#. Alguns dos tópicos explicados até poderiam ter sido feitos utilizando a interface gráfica no lugar do Console, mas isso poderia dispersar sua atenção. A partir do próximo tópico já utilizarei a interface gráfica, ou seja, os famosos Windows Forms, com botões, menus, radiobuttons, checkbox, imagens, enfim, não mais teremos esta tela preta do Console nos exemplos! Teremos um minicurso mais bonito e interessante, pois teremos a aparência de uma aplicação real. Se você acompanhou tudo até aqui e absorveu boa parte do que foi explicado, ótimo! Saiba que a parte mais entediante já passou!