Pilha dinamica em Java

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