Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [JAVA] Strutture Collegate Lineari: perchè scansiono la lista in questo modo?

    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();
        }


  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] Strutture Collegate Lineari: perchè scansiono la lista in questo modo?

    Originariamente inviato da leonapster
    Non era sufficiente "ciclare" direttamente this.init ?

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

    quale errore commetto?
    No. Andavi a "corrompere" l'intera lista, alla fine la lista diventava "vuota".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: [JAVA] Strutture Collegate Lineari: perchè scansiono la lista in questo modo?

    Originariamente inviato da andbin
    No. Andavi a "corrompere" l'intera lista, alla fine la lista diventava "vuota".
    Ok, in "lettura" mi è chiaro. In un inserimento, non capisco come possa risultare modificata "this.init" dopo che ho agito su "p" anzichè su this.init

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: [JAVA] Strutture Collegate Lineari: perchè scansiono la lista in questo modo?

    Originariamente inviato da leonapster
    In un inserimento, non capisco come possa risultare modificata "this.init" dopo che ho agito su "p" anzichè su this.init
    this.init = ...qualcosa...
    ha senso farlo solo se k = 0, perché devi aggiungere in testa (prima del primo, eventuale se esiste, nodo) e quindi ovviamente la "testa" della lista, ovvero il tuo init, va toccato.
    Ma per k > 0 al massimo è il next di un nodo che si tocca.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.