Das hat schon ganz gut funktioniert, allerdings ist ein normales Array im Java nicht immer die beste Datenstruktur, allein schon deshalb, da es schwierig ist, einem bestehenden Array ein Element hinzuzufügen: Da bereits schon beim Erstellen eines Arrays festgelegt wird, wie viele Elemente es hat, müsste man schon im Voraus wissen, wie viele Elemente es enthalten wird. Unsere Zoohandlung weiß aber nicht im Voraus, wie viele Tiere in ihr gehalten werden müssen.
Da muss es etwas Besseres geben. Als einfaches Beispiel für eine solche Datenstruktur wollen wir eine einfach verkettete Liste (englisch: singly linked list) erstellen, die es uns erlauben soll, jederzeit ein neues Tier hinzuzufügen und diese Liste auszugeben.
Die Idee ist ganz einfach: Die verkettete Liste soll aus einzelnen Knoten bestehen. Jeder dieser Knoten kann ein Tier (Tier inhalt
) aufnehmen und verweist auf den Nachfolgerknoten (Knoten nachfolger
).
Unsere verkettete Liste hat einen Verweis auf den ersten Knoten (damit wir nachher alle Knoten ausgeben können) und auf den letzten Knoten (damit wir wissen, an welchen Knoten wir einen neuen Knoten anhängen).
Das hat schon ganz gut funktioniert, allerdings ist ein normales Array im Java nicht immer die beste Datenstruktur, allein schon deshalb, da es schwierig ist, einem bestehenden Array ein Element hinzuzufügen: Da bereits schon beim Erstellen eines Arrays festgelegt wird, wie viele Elemente es hat, müsste man schon im Voraus wissen, wie viele Elemente es enthalten wird. Unsere Zoohandlung weiß aber nicht im Voraus, wie viele Tiere in ihr gehalten werden müssen.
Da muss es etwas Besseres geben. Als einfaches Beispiel für eine solche Datenstruktur wollen wir eine *einfach verkettete Liste* (englisch: _singly linked list_) erstellen, die es uns erlauben soll, jederzeit ein neues Tier hinzuzufügen und diese Liste auszugeben.
Die Idee ist ganz einfach: Die verkettete Liste soll aus einzelnen Knoten bestehen. Jeder dieser Knoten kann ein Tier (`Tier inhalt`) aufnehmen und verweist auf den Nachfolgerknoten (`Knoten nachfolger`).
Unsere verkettete Liste hat einen Verweis auf den ersten Knoten (damit wir nachher alle Knoten ausgeben können) und auf den letzten Knoten (damit wir wissen, an welchen Knoten wir einen neuen Knoten anhängen).