[AJUDA] lista encadeada simples em java - Métodos de Existir e Remover [URGENTE]

05/06/2017

9

Estou tentando fazer um método da lista encadeada simples, mas já estou a 2 dias tentando resolver esses métodos e não dou um jeito..
todos os outros já estão funcionando, mas o de existir quando só se cria um node1, e tenta testar ele estava dando como true o node que eu não tinha inserido ainda, e o remover só consigo remover o primeiro node da lista encadeada, segue TODOS os códigos, se alguém poder me ajudar, seria de grande favor

class ListaDinamica

package br.edu.unifil.comp2022.listadinamica;
public class ListaDinamica{
    private Node inicio, ultimo;
    private int tamanho = 0;

    public ListaDinamica(){
        this.inicio = null;
        this.ultimo = null;
    }
    
    public void inserir(Node node){
        if(inicio == null){
            inicio = ultimo = node;
        }else{
            Node aux = inicio;
            while(aux.getProximo() != null){
                aux = aux.getProximo();
            }
            aux.setProximo(node);
        }
        tamanho++;
    }
    
    public void remover(Node node){
        Node procurar = node;
        
        if(inicio == null){                     //Lista Vazia
            System.out.println("Lista vazia");
        }
        if(existe(node) == true){
      
        if(inicio != null && inicio != inicio.getProximo()){                     // remove o primeiro elemento     
            inicio = inicio.getProximo();
        }
        else if(inicio.getProximo() != null){
            while(inicio.getProximo() != null){
                procurar = procurar.getProximo();
                if(node.getProximo() == null){
                    procurar.setProximo(null);
                }else{
                    procurar = node.getProximo();
                    node.setProximo(null);
                }
            }
        }
        tamanho--;
        }
    }
    
    public boolean existe(Node node){
        Node contar;
        Node aux;
        aux = inicio;
        if(node != null && tamanho == 0){
            return true;
        }
        else{
            while(inicio != null || aux.getProximo() != null){
                return true;
            }
        }
        return false;
    }
    
    public int tamanho(){
        return tamanho;
    }
    
    @Override
    public String toString(){
        String ret;
        if(inicio == null){
            ret = "[]";
        }else{
            ret = "[";
            Node aux = inicio;
            while(aux.getProximo() != null){
                ret = ret + aux + ", ";
                aux = aux.getProximo();
            }
        }
        ret = ret + "]";
        return ret;
    }
}




class Node
package br.edu.unifil.comp2022.listadinamica;

import java.lang.Math;
/**
 * Write a description of class Node here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Node{
    // instance variables - replace the example below with your own
    private int x;
    private Node proximo, anterior;

    /**
     * Constructor for objects of class Node
     */
    public Node(){       
        x = (int) (Math.random()*100);
    }

    public Node(int _x){
        this.x = _x;
    }
    
    public int getX(){
        return this.x;
    }
    
    public Node getAnterior(){
        return this.anterior;
    }
    
    public Node getProximo(){
        return this.proximo;
    }
    
    public void setX(int _x){ this.x = _x; }
    
    public void setProximo(Node _proximo){
        this.proximo = _proximo;
    }
    
    public void setAnterior(Node _anterior){
        this.anterior = _anterior;
    }
    
    @Override
    public String toString(){
        return Integer.toString(this.x);
    }
}
Responder

Posts

Mano, acho que você usou a tag errada... node.js não tem a ver com seu problema.
Responder