Linked List set-Methode

Taso44

Aktives Mitglied
Hallo zusammen,
ich versuche im Moment eine Methode
für eine LinkedList zu implementieren, habe jedoch
die Lösung nicht ganz raus.
Es geht um die setIint index, Object o) Methdoe, vielleicht kann mir ja einer helfen, danke.

Mein Code:
Java:
public class LinkedListStudis {

    
    //innere Klasse
    public class Knoten {
        //...
        
        Student s; //private
        Knoten nächster; //private
        
        public Knoten(Student s, Knoten nächster) {
            this.s = s;
            this.nächster  =  nächster;
        }

    }
        Knoten head; 
    
    public LinkedListStudis() {
        head = null;
    } 
    
public void set(int index, Student student) {
        Knoten k = new Knoten (student,null);
        Knoten h = head;
        int i = 0;
        
        while(i< index-1) {
            h = h.getNächster();
            i++;;
        }   
        k.nächster  = h.getNächster().getNächster(); 
        h.setNächster(k);
    
        
    }
}


Nach meiner Logik geht h (head) solange weiter in der Liste bis sie vor den zu ersetzenden Knoten steht und in
k.nächster = h.getNächster().getNächster();

k.nächster = h.getNächster().getNächster();
k.nächster = h.getnächster.getnächster geht es darum, dass der nächste knoten von k der übernächste von h ist.
In h.setNächster wird der nächste Knoten von h der Knoten k gesetzt. So mit den beiden Zeilen würden verlinkungen zum
neuen Knoten gesetzt und die verlinkungen zum alten Knoten würden verschwinden.

Danke
 
Generell ist es immer hilfreich, wenn man erfährt, wo das Problem ist oder was nicht geht. Ich gehe davon aus, dass Du es schon probiert hast.

Wie soll der Index aussehen? Läuft dieser wie bei Java üblich bei 0 los oder soll er bei 1 anfangen?
Wie sieht die leere Liste aus? Gibt es sowas wie einen Startknoten, der leer ist?

Ohne diese Details kann man nicht viel sagen. Die Methode sieht erst einmal gut aus. Es fällt aber auf, dass Index 0 und Index 1 gleich behandelt werden. 0 ist nicht kleiner als 0-1 und auch nicht kleiner als 1-1. Das könnte also ein Problem sein. Das kann man aber in Tests durchspielen - zur Not einfach ausgeben, was man so alles hat. Also Elemente einfügen mit unterschiedlichen Werten und dann testen, wo er nach der Schleife landet.

Was auch auffällt: Es gibt keine Behandlung von Fehlern. Wenn die Liste 1 Element hat und Du Element 5 setzen willst: Das wird nicht gehen 🙂
 
Ich denke wenn du wirklich die set-Methode meinst, dann musst du keinen neuen Knoten erzeugen. Der Knoten existiert ja schon. Es würde reichen, wenn du den richtigen Knoten k gefunden hast, einfach s zu ersetzen, also: k.s = student;.
Bei einer add-Methode müsstest du allerdings einen neuen Knoten erzeugen und den Nachfolger setzen, entsprechend auch beim vorherigen Knoten das Gleiche.
 

Zurück
Oben