Dynamisch verkettete Listen
Dieses Programm ist eine dynamisch verkettete Liste. Das bedeutet, mit ihr kann eine Liste erstellt werden, die eine unbekannte länge hat.
Die liste wird mit Klassen gebildet. Jedes element stellt eine Klasse dar, der ein String übergeben wird. Die einzelnen Klassen sind mit Referenzen aufeinander mit einander verbunden. So kann die Liste von oben nach unten oder umgekehrt ausgelesen werden. Das direkte Auslesen eines Eintrags in der Liste ist daher rein logisch nicht möglich. Man muss immer vom Anfang der Liste an die stelle springen, wo man auslesen will.
Hier mal eine Grafik um das zu veranschaulichen:

Beschreibung
Die Liste besteht aus Objekten und Zeigern die auf Objekte zeigen. Jedes Element (schwarzer Kasten) stellt eine Klasse (auch Objekt genannt) dar. Mit hilfe der Zeiger die auf die sich angrenzenden Elemente zeigen, werden die einzelnen Elemente verbunden.
Es gibt insgesamt vier Zeiger.
- Anfang
- Next
- Prev
- Durchlauf
Der Zeiger "Anfang" (hier in rot) zeigt auf den Anfang der Liste. Wenn dieser Zeiger "verloren geht", kann die Liste nicht mehr gelesen werden!
Der Zeiger "next" (hier grün) zeigt auf das nächste Listenelement. So kann die Liste vorwärts durchlaufen werden.
Der Zeiger "prev" (hier gelb) zeigt auf das vorherige Listenelement. So kann die Liste auch rückwärts durchlaufen werden.
Zu letzt noch der Zeiger "Durchlauf" (hier blau). Er zeigt auf das Element, bei dem man sich gerade befindet. Mit seiner hilfe können die Methoden aufgerufen werden, um in der Liste vorwärts und rückwärts zu springen. Außerdem kann auch der Inhalt des Elementes ausgelesen werden.
Außerdem gibt es noch zwei Hilfszeiger mit Namen "p" und "hilf". Diese sind auch zum Durchlaufen, Verändern, und Hinzufügen von Elementen Notwendig. Da gehe ich jetzt aber nicht weiter drauf ein.
Die Klassen
Kommen wir nun zu den beiden Klassen die das ganze möglich machen. Die erste Klasse mit dem Namen "LElement", ist für die erstellung der Objekte zuständig. Jedes mal, wenn ein neues Element hinzugefügt wird, wird diese Klasse neu initialisiert. Dann gibt es noch die Steuerklasse mit dem Namen "Liste". Diese enthält alle Methoden um auf die Inhalte der Elemente zuzugreifen, und auch die Zeiger.
Die Methoden
- addItem(String) - Mit addItem kann ein weiterer Eintrag in die Liste eingetragen werden. Dieser Eintrag wird automatisch ans Ende der Liste gehängt. Sie stellt die "Hauptmethode" in der Klasse da. Der erste Aufruf erstellt automatisch eine neue Liste.
- delItem(int) - Löscht ein Element. Der Methode muss nur die Position Elementes in Form eines Integers übergeben werden.
- addOnPos(String, int) - Mit addOnPos kann ein weiteres Element in die Liste an einer beliebigen Stelle hinzugefügt werden. Man übergibt ihr zum einen den Inhalt des Elements. Zum anderen die Position des vorherigen Elements.
- end() - Mit dieser Methode wird der "Durchlauf"-Zeiger an den Anfang gesetzt, damit die Liste ausgelesen werden kann. Danach kann die Liste aber immer noch um weitere Einträge erweitert werden.
- getList() : String[] - Mit getList kann die gesamte Liste in Form eines Arrays von Typ String zurück gegeben werden. Dies ist vor allem Praktisch, wenn man zB den Inhalt der Liste in ein jList anzeigen lassen will.
- getItem() : String - Gibt den Inhalt des Elementes zurück, auf den der Zeiger "Durchlauf" gerade zeigt.
- moveUp(int) - Verschiebt das Element um eins nach oben. Die Position des Elementes das verschoben werden soll muss in Form eines Integers übergeben werden.
- moveDown(int) - Verschiebt das Element um eins nach unten. Die Position des Elementes das verschoben werden soll muss in Form eines Integers übergeben werden.
- resetList() - Löscht die gesamte Liste.
- getCount() : int - Gibt die Anzahl der Elemente die sich im Moment gerade in der Liste gefinden als Integer zurück.
Das war so eine grobe Übersicht über die Methoden die so zur Auswahl stehen. (Ich hoffe mal ich habe keine vergessen...)
Für weitere Informationen schickt mir ne Mail, oder schaut euch einfach den Quellcode an. Dieser kann unter diesem Absatz herrunter geladen werden.
Download
Grafisches Beispielprogramm: java_dynlist_gui.jar
Quellcode des grafischen Beispielprogramms als Netbeans Projekt: java_dynamic_gui_src.zip
Beispiel als "Konsolenversion" in Form vom Quellcode: java_dynlist_konprog.zip
Aufruf
Die Beispiele sind als *.jar-Archiv zum Download bereit.
Um sie zu starten reicht unter Windows ein simples doppelt klicken darauf.
Falls nicht gib folgendes in der Konsole (Linux)/CMD (Windows) ein (Java muss dabei installiert sein!):
| 1 2 | cd pfad_zur_jar java -jar file_name.jar |


