Classe list attributo next

di il
4 risposte

Classe list attributo next

public class List<Item>{

private Node first ;
private int N;
private class Node{
 Item item ;
 Node next ;
}

public boolean isEmpty(){
return first== null ;
}
public int length(){
retunr N;
}

public void insert(Item item , int i ){
int j =1 ;
Node nuovo ;
Node pred ;
nuovo = new Node();
nuovo.item = item;
if (i==1){
first = nuovo ;
first.next = pred ;
N++;
}else {
while(j+1< i){
j++ ;
pred = pred.next;
}
nuovo,next = pred.next;
pred.next = nuovo ;
N++
}
}
}
Ciao a tutti
Ho postato prima il codice perchè vorrei chiarimenti su cosa fa l attributo next alle varibili nel metodo insert ... Visto che non mi è chiaro quale valore assume la variabile con l attributo next come ad esempio "nuovo.next" che significato ha e che valore sta assumendo ? Non fa cambiare anche valore alla variabile "nuovo" ?

Vi ringrazio in anticipo ciao a tutti

4 Risposte

  • Re: Classe list attributo next

    nuovo
    è il riferimento al nodo che "contiene" l'item appena inserito nella lista.
    nuovo.next
    è il riferimento al nodo successivo al nodo che hai appena inserito. Se il nodo appena inserito è l'ultimo della lista (o anche l'unico),
    nuovo.next
    è un riferimento a
    null
    poichè non esiste nessun nodo successivo.
  • Re: Classe list attributo next

    Ok
    quindi che succede quando fa l assegnamento
     nuovo.next = pred.next 
    ?
  • Re: Classe list attributo next

    Succede che stai assegnando al nodo successivo al nodo nuovo che hai appena inserito (cioè a nuovo.next) il nodo successivo al nodo pred.
    Comunque attenzione che l'algoritmo che hai postato, a parte qualche errore di battitura, non compila perchè pred non viene mai inizializzata.
  • Re: Classe list attributo next

    Ok grazie mille ... l errore di battitura l avevo notato ma ancora non avevo compilato ... forse c'è un errore nel codice visto che l ho copiato da una dispensa . pred molto probabilmente viene inizializzato con first.next non il contrario.
Devi accedere o registrarti per scrivere nel forum
4 risposte