Pilha
Contêiner onde objetos são
inseridos e retirados de acordo com o princípio:
– “o último
que entra é o primeiro que sai”
Aplicações de Pilha
• Aplicações diretas
– Histórico de páginas visitadas em um navegador
– Sequência de desfazer em um editor de textos
– Cadeia de chamada de métodos em um programa
• Aplicações indiretas
– Estrutura de dados auxiliares para algoritmos
Pilha – Operações da Stack
• Principais
– push(object): insere um elemento na pilha
– object pop(): remove e retorna o último elemento inserido
• Auxiliares
– object top(): retorna o último elemento inserido sem removê-lo
– integer size(): retorna o número de elementos armazenados
– boolean isEmpty(): indica se há ou não elementos na pilha
Em Java, já
existe a classe para a Pilha a Java.util.Stack, Os métodos disponíveis nesta
classe, entre outros, são:
Pus(obj) = Empilha , pop() = Desempilha e peek() =
topo(), tamanho(),e vazia().
Os métodos
pop() e peek() lançam a exceção StackEmptyException se a pilha estiver vazia
quando eles são chamados.
Mesmo
existindo uma classe em Java, aqui estamos interessados em apreender como
projetar e implementar uma pilha e uma fila em Java.
1. Passo
Definição
de uma API (Application Programming Interface) que descreva os nomes dos
métodos que iremos utilizar e como eles serão declarados e como serão usados.
2. passo
Implementação
concreta dos métodos descritos na interface.
package pilha2;
/**
*
* @author Carlos
*/
public class Pilha {
private Object valorOrbital;
private Pilha proximo;
// Get e Set
public void setProximo(Pilha proximo) {
this.proximo = proximo;
}
public void setValorOrbital(Object valorOrbital) {
this.valorOrbital = valorOrbital;
}
public Pilha getProximo() {
return this.proximo;
}
public Object getValorOrbital() {
return this.valorOrbital;
}
public void Insere(Pilha pilha, Object valorOrbital){
Pilha temporario = new Pilha();
temporario.setValorOrbital(valorOrbital);
temporario.setProximo(pilha.getProximo());
pilha.setProximo(temporario);
}
// Fim inserção
// Remoção
public void remove(Pilha pilha){
Pilha temporario = new Pilha();
if(pilha.vazia(pilha) == true){
temporario = pilha.getProximo();
pilha.setProximo(temporario.getProximo());
temporario = null;
}
else{
System.out.println("A pilha esta vazia");
}
}
// Fim remoção
// Imprime - Neste caso, verfica-se somente o topo
public void top(Pilha pilha){
Pilha temporario = new Pilha();
temporario = pilha.getProximo();
if(temporario.vazia(temporario) == true)
System.out.println("Topo : "+temporario.getValorOrbital());
else{
System.out.println("Pilha Vazia");
}
}
// Fim Top
// Vazia
public boolean vazia(Pilha pilha){
if(pilha == null)
return(false);
else
return(true);
}
}
package pilha2;
/**
*
* @author Carlos
*/
public class Principal {
public static void main(String args[]){
Pilha pilha = new Pilha();
pilha.Insere(pilha, 1);
pilha.Insere(pilha, 2);
pilha.Insere(pilha, 3);
pilha.Insere(pilha, 4);
pilha.Insere(pilha, 5);
pilha.top(pilha);
pilha.remove(pilha);
pilha.top(pilha);
}
}
Nenhum comentário:
Postar um comentário