Ciao testa è l'inizio della lista concatenata ho creato una classe Elemento per creare il nodo della lista questo è il codice:
Codice: Seleziona tutto
public class Elemento {
public int inf; //Valore del nodo
public Elemento next; //Puntatore di lista
//COSTRUTTORE DI LISTA CON UN SOLO PUNTATORE(next) PERCIO' LA LISTA SARA'
//PERCORRIBILE SOLO PARTENDO DAL NODO INIZIALE
public Elemento(int inf,Elemento next)
{
this.inf=inf; //INIZIALIZZAZIONE
this.next=next;
}
}
Questa invece è la classe Lista con il metodo visualizza e un metodo verifica
Codice: Seleziona tutto
public class Lista2 {
Elemento testa=null;
//COSTRUTTORE CHE ISTANZIA UNA SERIE DI N INTERI
public Lista2(int n){
for(int i=0;i<n;i++)
{
testa=new Elemento((int)(Math.random()*100),testa);
}
}
public void visualizza()
{
for(Elemento corrente=testa;corrente!=null;corrente=corrente.next)
{
System.out.print(corrente.inf+" ");
}
System.out.println("");
}
//SCRIVERE UN METODO RICORSIVO CHE DATO UNA LISTA DI INTERI AD OGNI ELEMENTO DISPARI
//SOSTITUISCE IL SUO DOPPIO E IL NUMERO DI VALORI MODIFICATI
private int modifica(Elemento testa)
{
if(testa==null)
return 0;
else
{
if(testa.inf%2==0)
{
return modifica(testa.next);
}
else
{
testa.inf *=2;
return 1+modifica(testa.next);
}
}
}
public int modifica()
{
return modifica(testa);
}
e poi ho la classe main i nucleo del programma
Codice: Seleziona tutto
public class Main {
public static void main(String[] args) {
Lista2 l=new Lista2(20);
l.modifica();
l.visualizza();
}
}
come puoi vedere ho usato testa anche nel metodo modifica e visualizza testa dovrebbe essere il primo elemento della coda se ho ben capito...o credo il valore del primo puntatore di lista!