Buscar

Como criar metodos de adicionar, remover e inserir numa lista dupla em java?

Se possivel demostrar graficamente os metodos :-)

 

💡 7 Respostas

User badge image

Joao Andre MArtins Dias

/**
 *
 *
 * @author joao andré martins
 * jamdes@hotmail.com
 */
public class No {

    private int info;
    private No ant;
    private No prox;

    public No() {
        this.ant = null;
        this.prox = null;

    }

    public No(int info) {
        this.info = info;
        this.ant = null;
        this.prox = null;
    }

    public int getInfo() {
        return info;
    }

    public void setInfo(int info) {
        this.info = info;
    }

    public No getAnt() {
        return ant;
    }

    public void setAnt(No ant) {
        this.ant = ant;
    }

    public No getProx() {
        return prox;
    }

    public void setProx(No prox) {
        this.prox = prox;
    }

}

0
Dislike0
User badge image

Joao Andre MArtins Dias



/**
 *
 * @author joao andré martins
 * jamdes@hotmail.com
 */
public class ListaDE {

    private No ini;
    private No fim;

    public ListaDE() {
        this.ini = null;
        this.fim = null;
    }

    //--------------------------------------------------------------------------
    public void init() {
        this.ini = null;
        this.fim = null;
    }

    //--------------------------------------------------------------------------
    public void insereFinal(int num) {
        if (ini == null) {
            ini = fim = new No(num);
        } else {
            fim.setProx(new No(num));
            fim.getProx().setAnt(fim);
            fim = fim.getProx();
        }
    }

    //--------------------------------------------------------------------------
    public void push(int num) {
        if (ini == null) {
            ini = fim = new No(num);
        } else {
            ini.setAnt(new No(num));
            ini.getAnt().setProx(ini);
            ini = ini.getAnt();
        }
    }

    //--------------------------------------------------------------------------
    public No buscaExaustiva(int chave) {
        No aux = ini;
        while (aux != null && aux.getInfo() != chave) {
            aux = aux.getProx();
        }
        return aux;
    }

    //--------------------------------------------------------------------------
    private No buscaSentinela(int chave) {
        insereFinal(chave);
        No aux = ini;
        while (aux.getInfo() != chave) {
            aux = aux.getProx();
        }
        return (aux.getProx() != null) ? aux : null;
    }

    //--------------------------------------------------------------------------
    public No buscaExaustivaS(int chave) {
        No aux = buscaSentinela(chave);
        fim = fim.getAnt();
        fim.setProx(null);
        return aux;
    }

    //--------------------------------------------------------------------------
    public void remove(int info) {
        No aux = buscaExaustivaS(info);
        if (aux != null) {
            if (ini == fim) {
                init();
            } else if (aux == ini) {
                ini = ini.getProx();
                ini.setAnt(null);
            } else if (aux == fim) {
                fim = aux.getAnt();
                fim.setProx(null);
            } else {
                aux.getAnt().setProx(aux.getProx());
                aux.getProx().setAnt(aux.getAnt());
            }

        }
    }

    //--------------------------------------------------------------------------
    public void insercaoDireta() {
        No pos, i = ini.getProx();
        int aux;
        while (i != null) {
            aux = i.getInfo();
            pos = i;
            while (pos.getAnt() != null && aux < pos.getAnt().getInfo()) {
                pos.setInfo(pos.getAnt().getInfo());
                pos = pos.getAnt();
            }
            pos.setInfo(aux);
            i = i.getProx();
        }
    }

    //--------------------------------------------------------------------------
    public void selecaoDireta() {
        int menor;
        No i = ini, j;
        while (i.getProx() != null) {
            menor = i.getInfo();
            j = i.getProx();
            while (j != null) {
                if (j.getInfo() < menor) {
                    menor = j.getInfo();
                }
                j.setInfo(i.getInfo());
                i.setInfo(menor);
                j = j.getProx();
            }
            i = i.getProx();
        }
    }

    //--------------------------------------------------------------------------
    public void bubbleSort() {
        No i = ini, tl2 = fim;
        int aux;
        while (tl2 != null) {
            while (i.getProx() != null) {
                if (i.getInfo() > i.getProx().getInfo()) {
                    aux = i.getInfo();
                    i.setInfo(i.getProx().getInfo());
                    i.getProx().setInfo(aux);
                }
                i = i.getProx();
            }
            i = ini;
            tl2 = tl2.getAnt();
        }
    }

    //--------------------------------------------------------------------------
    public void shakeSort() {
        No tl2 = fim, inicio = ini, i = inicio;
        int aux;
        while (tl2 != inicio) {
            i = inicio;
            while (i != tl2) {
                if (i.getInfo() > i.getProx().getInfo()) {
                    aux = i.getInfo();
                    i.setInfo(i.getProx().getInfo());
                    i.getProx().setInfo(aux);
                }
                i = i.getProx();
            }
            tl2 = tl2.getAnt();
            i = tl2;
            while (i != inicio) {
                if (i.getInfo() < i.getAnt().getInfo()) {
                    aux = i.getInfo();
                    i.setInfo(i.getAnt().getInfo());
                    i.getAnt().setInfo(aux);
                }
                i = i.getAnt();

            }
            inicio = inicio.getProx();
        }
    }
    //--------------------------------------------------------------------------

    public void exibe() {
        No aux = ini;
        while (aux != null) {
            System.out.print(aux.getInfo() + ",");
            aux = aux.getProx();
        }

    }
    //--------------------------------------------------------------------------
}

0
Dislike0
User badge image

Joao Andre MArtins Dias

Quanto a demonstrr graficamente não sei nem se entendi a pergunta, Mas está ai uma lista duplamente encadeada com descritor.

Classe Nó e Classe ListaDE, poara usar crie uma aplicação com metodo main(), mas acho que isso você ja sabe.

Espero ter ajudado.

 

0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta

User badge image

Outros materiais