A Pilha é uma estrutura que pode armazenar dados de diferentes tipos. Ela pode ser utilizada em compiladores para decodificar expressões aritméticas, calcular endereços de retorno de chamadas, armazenar variáveis locais de procedimentos e parâmetros, em sistemas operacionais e na máquina virtual Java. Podemos usá-las também na resolução de algoritmos de pesquisas e apoio à decisão de melhor caminho dentre várias possibilidades. Pilha é uma estrutura de dados muito simples; um recurso frequente na ciência da computação para a programação.
Pilha é uma estrutura de dados que é utilizada quando você está programando e necessita de uma forma de lista linear. Ou seja, é quando um elemento está atrás do outro e assim sucessivamente.
Uma propriedade fundamental é que o acesso à Pilha acontece apenas por uma extremidade, que é chamada de topo, onde os elementos são inseridos, removidos ou observados. Esse processo - em que o último a entrar é o primeiro a sair - é chamado de UEPS, ou do inglês LIFO (last in, first out).
Vamos demonstrar o funcionamento de uma Pilha de letras.
Inicialmente, esta pilha está vazia, ou seja, seu topo é igual a –1, conforme mostra a figura abaixo:

Vamos então empilhar a letra A na pilha, em seguida empilhar a letra B e depois a letra C, conforme a sequência abaixo. Perceba que o topo muda a cada letra que é empilhada:

Se quisermos desempilhar um elemento, só é possível pelo que está no topo. Veja a figura abaixo:

Para exemplificar, imagine as bandejas de uma lanchonete. Normalmente, elas estão empilhadas uma em cima da outra. Quando alguém vai pegar a bandeja, pega sempre a que está em cima, ou seja, a que está no topo.
Se uma pessoa for devolver a bandeja, ela a coloca por cima da pilha, ou seja, no topo. Pode acontecer da pilha estar vazia, isso significa que não tem mais bandejas e, por isso, não é possível retirar mais. Tem também a possibilidade de você só conseguir colocar uma bandeja no topo da pilha, se ainda tiver espaço para isso.
Quando desenvolvemos um algoritmo ou programa, muitas vezes precisamos estruturar as informações dos diferentes tipos de dados que podemos utilizar. Para isso, podemos fazer uso da estrutura de dados chamada Pilha para dispor as informações no programa inserindo, removendo e consultando-as.
Outro exemplo do uso de pilhas são os navegadores da Internet, que guardam os endereços visitados recentemente. Sempre que o usuário acessa um site, seu endereço é guardado numa pilha e quando o usuário resolve pressionar o botão de voltar, retorna-se ao endereço que tinha sido empilhado por último.
Neste capítulo veremos como e quando trabalhar com Pilhas, bem como inserir, remover, consultar e manipular dados nesta estrutura.
Para o funcionamento da Pilha, são necessárias algumas operações para a sua manipulação. As operações de manipulação da Pilha são: