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