Dunque, queste sono le classi che gestiscono una lista di Nodi (NodoLista e ListaStringhe).

Il mio dubbio è nel metodo ListaStringhe->add() in cui viene aggiunto un nuovo nodo alla ListaStringa in posizione k-esima.

Il codice è corretto, ma non riesco a capire perchè viene fatta questa assegnazione per "scansionare tutte i nodi della lista"

Codice PHP:
NodoLista p this.init
Dopo l'assegnazione, "ciclo" la variabile p ed addirittura la modifico. Quello che non mi è chiaro è perchè l'introduzione di una nuova variabile. Non era sufficiente "ciclare" direttamente this.init ?

Se avessi fatto

Codice PHP:
while (this.init !=null){ 
this.init this.init.next;

quale errore commetto?



Codice PHP:
public class NodoLista{
    public 
String info;
    public 
NodoLista next;

    public 
NodoLista(String iNodoLista n){
        
this.info i;
        
this.next n;
    }

Codice PHP:
public class ListaStringhe{
    
    private 
NodoLista init;

    public 
ListaStringhe(){
        
this.init null;
    }

    public 
void add(int kString x){
        
        if(
k<0) throw new RuntimeException();

        if(
k==0){
            
            
NodoLista p2 = new NodoLista(xthis.init);
            
this.init p2;

        }else{
            
            
NodoLista p this.init;

            for(
int i=1p!=null && i<ki++){
                
p.next;
            }

            if(
p!=null){

                
NodoLista p2 = new NodoLista(xp.next);
                
p.next p2;

            }else{
                throw new 
RuntimeException();
            }

        }

    }

    public 
void stampa(){
        
        
NodoLista p this.init;

        if(
p==null){System.out.println("Lista Vuota");}

        while (
p!=null) {

            
System.out.print(p.info ",");
            
p.next;
            
        }

        
System.out.println();

    }


Main.java

Codice PHP:
public class Main{
    
    public static 
void main(String[] args){
        

        
ListaStringhe ls = new ListaStringhe();

        
ls.stampa();

        
ls.add(0"Zero");

        
ls.stampa();

        
ls.add(1"Primo");
        
ls.add(2"Secondo");
        
ls.add(1"Secondo");

        
ls.stampa();
    }