(AED) Estudando Lista -> Metodo para escluir No (ExcluirTrem()) não ta funfando!

4 respostas
carlosibg

galera seguinte, to estudando lista, consegui fazer os metodos bunitim, o unico q empaquei nele foi o metodo de excluir o Object especifico, os outros métodos que coloquei são só pra vcs não fikarem boiando!

no método exclurTrem() -> tentei uma coisa meio q recursiva, nem sei se está certo! me ajudem aí a corrigir (se der pra corrigir) ou me indiquem a lógica ou o caminho para fazer o método para excluir determinado Object que eu queira, desde já, muito GRATO

public class lista {

    private No inicio;

    public lista()
    {
        inicio = null;
    }

    public void inserir(Object i)
    {
        No novo = new No(i,inicio);
        inicio = novo;
    }

    public Object excluir()
    {
        Object temp = inicio.getInfo();
        inicio = inicio.getProx();
        return temp;
    }

    public void print()
    {
        No trab = inicio;
        while(trab != null)
        {
            System.out.println(trab.getInfo());
            trab = trab.getProx();
        }
    }

    public boolean verifica (Object i)
    {
        No trab = inicio;
        while(trab != null)
        {
            if(trab.getInfo()== i)
                return true;

            else
                trab = trab.getProx();
        }
        return false;
    }

    

    public void excluirTrem(Object i)
    {
        if(verifica(i))
        {
            if(inicio.getInfo() == i)
            {
                //inicio = inicio.getProx();
                while(inicio != null)
                {
                    inicio = inicio.getProx();
                }
            }
            else
            {
                inicio = inicio.getProx();
                excluirTrem(i);
            }
        }
        else
        {
          System.out.println("Não existe isso na lista para ser excluidi");
        }
    }

    }

e pra nao ter nenhuma confusão vo postar o codigo da classe No q fiz

public class No {
    
    private Object info;
    private No prox;

    public No(){}
    public No(Object i, No p)
    {
        info = i;
        prox = p;
    }

    public void setInfo(Object i){info = i;}
    public void setProx(No p){ prox = p;}
    public Object getInfo(){return info;}
    public No getProx(){return prox;}

}

4 Respostas

Eder_Peixoto

Empacou exatamente no quê?

carlosibg

empaquei no metodo excluirTrem()!

num ta dando certo

FacaNaCaveira

Fala ai carlosibg,
Analisei o seu codigo e cheguei a algumas conclusões, a implementação que acho que nao esta perfeita mas ai eh papo de vc fazer os ajustes. Voce criou o metodo excluirTrem() que deve fazer:

1 - chamar o metodo verifica(), que varre toda a lista em busca do parametro passado, caso ele exista ela retorna True
2 - Retornando True, vc deve fazer um While com a condição inicio.getInfo() != i, pois ele irá chegar ate o nó que devera ser excluido.
3 - inicio = inicio.getProx(), vc deve guardar para onde o Nó a ser excluido esta apondando, para poder refazer a lista depois da exclusao
4 - inicio.setProx(null), vc apontando o no atual para Null esta excluindo ele
5 - o retorno da função deve ser para onde o inicio.getProx() estava apontando, pois assim vc conseguirar reestruturar a sua lista, ou seja, com esse retorno, vc reaponta o anterior ao item excluido para o posterior ao item excluido.

Ficaria algo mais ou menos assim:

public No excluirTrem(Object i) {
        if (verifica(i)) {
            while (inicio.getInfo() != i) {
                inicio = inicio.getProx();
            }
            inicio = inicio.getProx();
            inicio.setProx(null);
            return inicio;

        } else {
            System.out.println("Não existe isso na lista para ser excluidi");
            return null;
        }
    }

Abração 8)
Max

D

empaquei no metodo excluirTrem()!

num ta dando certo

Que erro que da ?

NullPointerException??

Criado 21 de julho de 2010
Ultima resposta 23 de jul. de 2010
Respostas 4
Participantes 4