Pilha dinamica em Java

1 resposta
C

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;

	}

	
}

1 Resposta

N

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

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;
    }

}

Métodos comuns para pilha estática e dinâmica:

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;
}

Pilha Dinâmica:

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;
        }
    }
    
}

Flw

Criado 3 de abril de 2010
Ultima resposta 3 de abr. de 2010
Respostas 1
Participantes 2