Referência a objetos

0 respostas
caiofabioa

Olá pessoal estou com um grande problema aqui. Vocês vão ver os códigos e vão entender.

tenho o NoDaLista:
package testalista;
public class NoDaLista {
    int data;
    NoDaLista proximo;
    
    public NoDaLista(int data) {
        this.data = data;
        this.proximo = null;
    }
    public NoDaLista(int data, NoDaLista proximo) {
        this.data = data;
        this.proximo = proximo;
    }
}
o Lista.java
package testalista;

public class Lista {

    NoDaLista primeiro, ultimo;
    String nome;

    public Lista(String nome) {
        this.nome = nome;
        primeiro = ultimo = null;
    }

    public Lista() {
        this.nome = "Sem nome";
        primeiro = ultimo = null;
    }

    public boolean vazio() {
        return primeiro == null;
    }

    public void insereNoComeco(int num) {
        if (vazio()) {
            primeiro = ultimo = new NoDaLista(num);
        } else {
            primeiro = new NoDaLista(num, primeiro);
        }
    }

    public void insereNoFim(int num) {
        if (vazio()) {
            primeiro = ultimo = new NoDaLista(num);
        } else {
            ultimo = ultimo.proximo = new NoDaLista(num);
        }
    }

    public int removeDoComeco() {
        int volta = -100;
        if (!vazio()) {
            volta = primeiro.data;
            if (primeiro == ultimo) {
                primeiro = ultimo = null;
            } else {
                primeiro = primeiro.proximo;
            }
        }
        return volta;
    }

    public int removeDoFim() {
        int valor = -100;
        if (!vazio()) {
            if (primeiro == ultimo) {
                valor = ultimo.data;
                primeiro = ultimo = null;
            } else {
                NoDaLista aux = primeiro;
                while (aux.proximo != ultimo) {
                    aux = aux.proximo;
                }
                valor = ultimo.data;
                aux.proximo = null;
                ultimo = aux;
            }
        }
        return valor;
    }

    public void imprime() {
        if (!vazio()) {
            NoDaLista aux = primeiro;
            while (aux != null) {
                System.out.println(aux.data);
                aux = aux.proximo;
            }
        }
    }

    public float media() {
        float media = 0;
        int i = 0;
        if (!vazio()) {
            NoDaLista cont = primeiro;
            while (cont != null) {
                media += cont.data;
                i++;
                cont = cont.proximo;
            }
        }
        media = media / i;
        return media;
    }

    public void seekAndDestroy(int n) {
        NoDaLista aux = primeiro;
        
        while(aux != ultimo){
            if(aux.proximo.data == n){
                aux.proximo = null;
                aux = aux.proximo.proximo;
            }
                aux = aux.proximo;
        }
        aux = primeiro;
            while (aux != null) {
                System.out.println(aux.data);
                aux = aux.proximo;
        }
        
    }

    public int maiorValor(){
        NoDaLista list = primeiro;
        int aux = list.data;
        while(list != null){
            if(list.data > aux){
                aux = list.data;
            }
            list = list.proximo;
        }
        return aux;
    }
}
e o TestaLista.java
package testalista;

public class TestaLista {
    public static void main(String[] args) {
        Lista teste = new Lista();
        teste.insereNoComeco(30);
        teste.insereNoComeco(40);
        teste.insereNoComeco(60);
        teste.insereNoFim(80);
        teste.insereNoFim(90);
        teste.insereNoFim(100);
        teste.imprime();
        System.out.println("**********************************");
        teste.removeDoComeco();
        teste.removeDoFim();
        teste.imprime();
        System.out.println("**********************************");
        System.out.println("A media é: "+teste.media());
        System.out.println("**********************************");
//        teste.seekAndDestroy(30);
        System.out.println("O maior número é o: "+teste.maiorValor());
        System.out.println("**********************************");
        teste.seekAndDestroy(30);
    }
}

reparem no Metodo SeekAndDestroy, ele teria que achar o numero 30 e apagar a referencia, como eu vou conseguir fazer isso? esta muito dificil! Fiz todas as classes certinha só este metodo que esta me enchendo!

Criado 5 de março de 2013
Respostas 0
Participantes 1