Java verkettet Listen?

2 Antworten

Das element heißt nicht wirklich "nextElement", das ist nur die lokale bezeichnung für das objekt. Die haben auch noch einen einzigartigen hash, das ist der name wenn du so willst. Den geben sie aus wenn du "toString()" nicht überschreiben hast und das objekt auf der konsole ausgibst.

Die bezeichnung "nextElement" kennt deine node garnicht. Die ist nur innerhalb der klasse Liste bekannt.
Du übergibst diese erstellte node nur der letzten node in der liste, da wird dann das next element überschrieben.

Du kannst die Node in der klasse Liste, in der addElem auch z.B. nur "n" nennen anstatt nextElement. Vielleicht ist das für dich dann verständlicher.

Wie hast du den code denn geschrieben ohne ihn zu verstehen?

kollnado19 
Fragesteller
 18.12.2019, 20:36

Was ich halt nicht so ganz verstehe ist, meine Liste besteht ja aus vielen Node Objekten, aber was für Referentvariablen haben den alle diese Methoden?

Ich kenn das halt nur, dass beim erstellen eines Objekt immer eine Name angegeben wird, mit dem das Objekt angesprochen wird. Hier habe ich aber nicht für jedes Objekt einen Namen bestimmt. Wo werden die jetzt abgespeichert?

0
jort93  18.12.2019, 21:26
@kollnado19

Die bezeichnung ist immer nur lokal gültig. Du könntest sagen die referenzvariable von allen ist nextNode.

Die werden auf dem heap abgespeichert. Der name ist dabei egal, hauptsache das programm kennt die speicheraddresse. Das new keyword allokiert speicher auf dem heap und gibt eine Refernz zu diesem speicherort zurück.

Dir scheint schon das ganz grundlegende verständnis zu fehlen. https://de.wikipedia.org/wiki/Sichtbarkeit_(Programmierung) https://de.wikipedia.org/wiki/Datenkapselung_(Programmierung)

0
jort93  18.12.2019, 23:14
@kollnado19

Nö, ich studiere Informatik.

Bzw. konnte ich auch vorher schon etwas java, aber so verkettete listen habe ich damals nicht implementiert.

0

Es kommt eigentlich erstmal auf die verkettete Liste an, also ob es eine einfach verkettete, doppelt verkettete oder sonstwas ist. Ich gehe mal von einer einfach verketteten Liste in der einfachsten Form aus.

Dabei gehst du zuerst auf das erste Element und hangelst dich dann mit sowas wie "getNextElement()" solange weiter vor bis "getNextElement()" dir "NULL" zurückgibt. An der Stelle weißt du, dass deine Liste zuende ist und du auf dem letzten Element der Liste bist. Für dieses Element setzt du "nextElement" nun auf dein einzufügendes Element.

Überschrieben wird dabei nichts.

Ich hoffe mal es ist verständlich genug.