List implementierung Java?
also ich habe diese methode bei einer singlelinkedlist
ich erstelle also einen neuen Knoten boom
und danach setze ich aber next von dem neuen knoten auf front komischerweise und dann setze ich front gleich dem neuen Knoten ? kann mir das mal jemand erklären?
wenn die liste leer ist habe ich ncihts und front ist null, ich füge ein und dann zeigt der neue knoten auf front, der dann aber der neue knoten ist komischerweise, ich hätte wenn dann front = newNode; front.setNext(newNode); und fertig
sdfs
1 Antwort
![](https://images.gutefrage.net/media/default/user/5_nmmslarge.png?v=1438863662000)
Dein Front-Zeiger zeigt auf A.
Du erstellst Element B mit Wert V. Der Next-Zeiger von B zeigt initial auf null.
Du setzt den Next-Zeiger auf das Element auf das gerade der Front-Zeiger zeigt (also auf A).
Dann lässt du den Front-Zeigter auf das neue Element zeigen (auf B).
![](https://images.gutefrage.net/media/default/user/5_nmmslarge.png?v=1438863662000)
Du setzt den Next-Pointer auf den alten Wert des Front-Pointers und setzt dann den Front-Pointer auf den neuen Knoten.
Front selbst hat keinen Daten-Wert, sondern ist nur eine Referenz auf ein anderes Element. Vor dem Einfügen auf A (oder null wenn die Liste leer ist), nach dem Einfügen auf das neue Element.
![](https://images.gutefrage.net/media/user/EasternPremise/1686762031648_nmmslarge__211_707_440_440_f7da77ab5cd0cdaea1f8e8b22bfbe6d0.png?v=1686762032000)
aber wir haben das so gemacht, dass wir front gleich dem neuen knoten setzen nach dem zeiger setzen, bzw. wenn front null ist, haben wir folgendes gemacht: if (front == null){
Node n = new Node(VAlue);
front = n;
front.next = null;
}
bzw. wenn man schon eine liste hat dann hat man wie du auch das erst umgezeigert also den zeiger des neu erstellten knotens auf front gesetzt und dann front = n; gemacht, damit man den neuen head kennt, und wenn ich eine liste erstelle und front.datavalue ausgebe kommt auch der erste wert raus
![](https://images.gutefrage.net/media/default/user/5_nmmslarge.png?v=1438863662000)
Deine Frage verstehe ich nicht.
und wenn ich eine liste erstelle und front.datavalue ausgebe kommt auch der erste wert raus
Ja, im Prinzip ist in Java jese Objekt-Variable nur eine Referenz auf ein Objekt. Und die referenz kann auch leer sein (dann ist sie null).
Und mit dem Punkt-Operator dereferenziert man und ruft dann den Wert des referenzierten Objekts auf.
![](https://images.gutefrage.net/media/user/EasternPremise/1686762031648_nmmslarge__211_707_440_440_f7da77ab5cd0cdaea1f8e8b22bfbe6d0.png?v=1686762032000)
jo aber wenn ich eine liste erstelle List liste1 = new Liste(); liste1.addFront(2); und dann print(liste1.front.datavvalue oder value halt den wert) mache dann iwrd auch das richtige ausgeprinted, also hat front sozusagen datavalue
![](https://images.gutefrage.net/media/default/user/5_nmmslarge.png?v=1438863662000)
Klar.
Was passiert:
List liste1 = new Liste();
Eine neue Liste wird erstellt. liste1.front ist null.
liste1.addFront(2);
Ein neues Element A wird erstellt. der Wert von A wird auf 2 gesetzt.
liste1.front wird auf A gesetzt (zeigt jetzt auf A).
front.next (entspricht A.next) wird auf null gesetzt. (Eigentlich unnötig, denn A.next ist bereits nach der Initialisierung null).
![](https://images.gutefrage.net/media/user/EasternPremise/1686762031648_nmmslarge__211_707_440_440_f7da77ab5cd0cdaea1f8e8b22bfbe6d0.png?v=1686762032000)
ah ok gut, so wenn ich dann jetzt noch mal liste1.addFront(3); aufrufe wird neuer knoten erstellen der zeigt auf front also auf ehemals A was es aber nicht mehr gibt , da die liste sich ja nur explizit den head merkt, dann setze ich front gleich dem neuen knoten sodass der verweis von front auf ehemals A verschwindet und jetzt bei dem neuen Knoten ist und dadurch erbt sozusgaen alle eigenschaften von dem neu erstellten knoten oder ?
und wenn man sich noch in der methode befindet zeigen dann sowohl der knoten als auch front auf die gleiche stelle oder? also gibt es dann sozuagen 2 verweise auf den knoten mit der 2
![](https://images.gutefrage.net/media/default/user/5_nmmslarge.png?v=1438863662000)
und wenn man sich noch in der methode befindet zeigen dann sowohl der knoten als auch front auf die gleiche stelle oder? also gibt es dann sozuagen 2 verweise auf den knoten mit der 2
Ja.
wenn ich dann jetzt noch mal liste1.addFront(3); aufrufe wird neuer knoten erstellen der zeigt auf front also auf ehemals A
Der zeigt halt auf den Knoten auf den vorher front gezeigt hatte.
was es aber nicht mehr gibt , da die liste sich ja nur explizit den head merkt
Geben tut es das schon noch. Nur hast du halt von deiner liste keine direkte Referenz dahin sondern musst dich erst durch die Liste bis zu dem Element hangeln.
dann setze ich front gleich dem neuen knoten sodass der verweis von front auf ehemals A verschwindet und jetzt bei dem neuen Knoten ist
Ja.
und dadurch erbt sozusgaen alle eigenschaften von dem neu erstellten knoten oder
Also erben tut da gar nichts.
Aber ja, "front" zeigt dann auf das neu erstellte Element und hat damit dieselben Eigenschaften wie dieses.
![](https://images.gutefrage.net/media/user/EasternPremise/1686762031648_nmmslarge__211_707_440_440_f7da77ab5cd0cdaea1f8e8b22bfbe6d0.png?v=1686762032000)
Ja erben war halt so gemeint, juut danke meista , kriegst den Stern
ich hab das nochmal grafisch veranschauclicht, die frage ist jetzt, welchen data value hat dann jetzt front, wenn es vorher null war?