Pessoal tenho que criar uma pilha dinamica em java sem uso de coleção, poderia da uma olhada para ver se está correto como eu criei?
obrigado.
public class PilhaDinamica {
PilhaDinamica anterior = null;
String info = null;
PilhaDinamica topo = null;
public PilhaDinamica() {
// TODO Auto-generated constructor stub
}
public void inseri(String cidade) {
PilhaDinamica aux = new PilhaDinamica();
aux.info = cidade;
aux.anterior = topo;
topo = aux;
}
}
Olá!
Olha cara as operações em uma pilha recebem nomes específicos:
Top: Acessa o elemento no topo da pilha.
Push: insere um elemento no topo da pilha.
Pop: remove um elemento do topo da pilha.
Então é bom manter essas nomeclaturas, pois é algo comum a todos.
Quando estudamos estrutura de dados vemos que as pilhas, filas e listas tem algo em comum, então tenta pensar OO ao realizar as coisas.
Se fosse eu criaria dessa maneira:
Prevê a alocação dinâmica
[code]public class No {
private String nome;
private No prox;
public No(){}
public No(String nome, No prox){
this.nome = nome;
this.prox = prox;
}
public String getDado() {
return this.nome;
}
public void setDado(String nome) {
this.nome = nome;
}
public No getProx() {
return prox;
}
public void setProx(No prox) {
this.prox = prox;
}
}[/code]
Métodos comuns para pilha estática e dinâmica:
[code]import bean.No;
public interface Stack {
public void push(String nome)throws Exception;
public void pop()throws Exception;
public boolean isEmpyt();
public int size();
public No top()throws Exception;
}[/code]
Pilha Dinâmica:
[code]import bean.interfaces.Stack;
public class PilhaDinamica implements Stack {
private No top;
public void push(String nome) {
No novo = new No();
novo.setDado(nome);
novo.setProx(top);
top = novo;
}
public void pop() throws Exception {
if (!isEmpyt()) {
top = top.getProx();
} else {
throw new excecoes.Vazio("Pilha Vazia !!!");
}
}
public boolean isEmpyt() {
if (top == null) {
return true;
}
return false;
}
public int size() {
No p;
p = top;
int cont = 0;
while (p != null) {
p = p.getProx();
cont++;
}
return cont;
}
public No top() throws Exception {
if (isEmpyt()) {
throw new excecoes.Vazio("Pilha Vazia !!!");
} else {
return top;
}
}
}[/code]
Flw