Guten Tag,
ich bin gerade im Kapitel der dynamischen Datenstrukturen angelangt. Zur Einführung in die Thematik wird die unsortierte Liste erläutert. Das allgemeine Prinzip ist mir geläufig, nur herrscht ein wenig Verwirrung im Bezug auf folgendem:
Code einer unsortierten Liste, wo der nächste Knoten am Anfang der Liste hinzugefügt wird:
Wenn ich nun eine neue Liste in meiner main Methode instanziiere, nennen wir diese einfach mitarbeiterListe und ich nun 3 neue Mitarbeiter in meine mitarbeiterListe hinzufügen möchte. Dann sehe das logischerweise wie folgt aus:
mitarbeiterListe.add("Testkandidat",'m',23);
mitarbeiterListe.add("Testkandidat2",'w',20);
mitarbeiterListe.add("Testkandidat3",'w',33);
Soweit sogut. Unten beigefügt befindet sich eine Darstellung wie meine add Methode Mitarbeiter für Mitarbeiter in meine mitarbeiterListe aufnimmt.
SKIZZE
Ich kann sehr wohl nachvollziehen (Beweis = Skizze und Code), wie die ersten beiden Mitarbeiter in meine mitarbeiterListe aufgenommen werden. Nur verstehe ich nun nicht ganz, was passiert, wenn Testkandidat3 in die mitarbeiterListe aufgenommen wird... Ich versuche trotzdem einmal darauf einzugehen:
Es wird ein neuer Knoten erstellt: n = new ListNode([...]);
n.next referenziert nun auf den Knoten, worauf head referenziert (Testkandidat2)!
head referenziert nun auf den Knoten, worauf n referenziert (Testkandidat3)!
Folglich wird doch aber von keiner Variablen mehr auf den Knoten Testkandidat1 referenziert... darauf folgernd wird Testkandidat1 doch vom GarbageCollector aufgesammelt?!
Und genau das ist der Punkt, den ich nicht verstehe! Oder habe ich die Liste schlicht und ergreifend falsch implementiert? Also die add Methode?
glg
Sir.JavaNoob
ich bin gerade im Kapitel der dynamischen Datenstrukturen angelangt. Zur Einführung in die Thematik wird die unsortierte Liste erläutert. Das allgemeine Prinzip ist mir geläufig, nur herrscht ein wenig Verwirrung im Bezug auf folgendem:
Code einer unsortierten Liste, wo der nächste Knoten am Anfang der Liste hinzugefügt wird:
Java:
public class List {
public class ListNode {
String name;
char geschlecht;
int alter;
ListNode next;
public ListNode(String name, char geschlecht, int alter) {
this.name = name;
this.geschlecht = geschlecht;
this.alter = alter;
}
}
ListNode head = null;
public void add(String name, char geschlecht, int alter) {
if(isEmpty()) {
head = new ListNode(name,geschlecht,alter);
} else {
ListNode n = new ListNode(name,geschlecht,alter);
n.next = head;
head = n;
}
}
public boolean isEmpty() {
if(head == null) {
return true;
} else {
return false;
}
}
}
Wenn ich nun eine neue Liste in meiner main Methode instanziiere, nennen wir diese einfach mitarbeiterListe und ich nun 3 neue Mitarbeiter in meine mitarbeiterListe hinzufügen möchte. Dann sehe das logischerweise wie folgt aus:
mitarbeiterListe.add("Testkandidat",'m',23);
mitarbeiterListe.add("Testkandidat2",'w',20);
mitarbeiterListe.add("Testkandidat3",'w',33);
Soweit sogut. Unten beigefügt befindet sich eine Darstellung wie meine add Methode Mitarbeiter für Mitarbeiter in meine mitarbeiterListe aufnimmt.
SKIZZE
Ich kann sehr wohl nachvollziehen (Beweis = Skizze und Code), wie die ersten beiden Mitarbeiter in meine mitarbeiterListe aufgenommen werden. Nur verstehe ich nun nicht ganz, was passiert, wenn Testkandidat3 in die mitarbeiterListe aufgenommen wird... Ich versuche trotzdem einmal darauf einzugehen:
Es wird ein neuer Knoten erstellt: n = new ListNode([...]);
n.next referenziert nun auf den Knoten, worauf head referenziert (Testkandidat2)!
head referenziert nun auf den Knoten, worauf n referenziert (Testkandidat3)!
Folglich wird doch aber von keiner Variablen mehr auf den Knoten Testkandidat1 referenziert... darauf folgernd wird Testkandidat1 doch vom GarbageCollector aufgesammelt?!
Und genau das ist der Punkt, den ich nicht verstehe! Oder habe ich die Liste schlicht und ergreifend falsch implementiert? Also die add Methode?
glg
Sir.JavaNoob
Zuletzt bearbeitet: