homedukeOOP mit Java: Verkette Listen aus Algorithmen und Datenstrukturen mit C Prof. Dr. Uwe Schmidt FH Wedel

Verkette Listen aus Algorithmen und Datenstrukturen mit C


weiter

Verkette Listen

merke
Dieses Lösung nutzt Typparameter aus Java 1.5 nicht, es wird ausschließlich mit Object als Elementtyp gearbeitet.
weiter
merke
Eine 1 zu 1 Übertragung für die LinkedList Klasse in Java 1.5 mit Generics ist auch nicht möglich, dafür würden Typparameter zur Laufzeit benötigt. Dieses ist in Java aber nicht erlaubt.
weiter
LinkedList
Eine Klasse für verkettete Listen in Java. Im Gegensatz zu C, wo die Liste durch einen Zeigertyp repräsentiert wurde, die einzelnen Knoten durch einen record, wird hier nur eine Klasse benötigt, da die implizite Indirektstufe durch die Referenzen in den Variablen die Zeiger ersetzt.
 
Die leere Liste wird aber nicht durch die ungültige Referenz repräsentiert, da mit dieser keine Operationen ausgeführt werden können, es kann also keine Methode isEmpty auf die ungültige Referenz angewendet werden.
 
Aus diesem Grund wird mit einer Referenz auf ein spezielles "globales" Objekt als leere Liste gearbeitet. Die Referenz wird als Klassenvariable, also mit dem Attribut static in der Klasse selbst angelegt, diese Referenz wird nicht nach außen bekannt gegeben, also mit dem Attribut private deklariert.
 
Compilation:
javac -source 1.7 -encoding iso-8859-1 LinkedList.java
weiter
Accumulate
Eine Klasse für Kommandos (--> Entwurfsmuster) zum Verarbeiten der Elemente in einem Container. Diese Klasse bietet eine allgemein einsetzbare Schnittstelle, nicht nur für die LinkedList Klasse.
 
Die Klasse enthält eine Verarbeitungsroutine process zur Verarbeitung eines Elements. Diese Klasse ist abstrakt, d.h. sie legt nur eine Schnittstelle fest. Konkrete Klassen sind NoOfElements für die Berechnung der Anzahl der Elemente, IntegerSum zum Aufsummieren und ToString zum Konvertieren eines ganzen Containers in einen String.
 
Aufgerufen werden diese Kommandos aus der forall Rountine in der LinkedList Klasse. Dort ist also einmal festgelegt worden, wie der Container verkettete Liste zu durchlaufen ist, in diesem Fall mit einer einfachen while-Schleife.
 
Mit dieser einen Kontrollstruktur und den allgemein verwendbaren Kommandos lassen sich also z.B. die Längenberechnung, das Aufsummieren, die toString Konversion und viele andere Operationen erzeugen.
weiter
NoOfElements
IntegerSum
ToString
Die Kommandos, (die Klassen) NoOfElements, IntegerSum und ToString
weiter
LinkedListTest
Ein Testprogramm, noch unvollständig, das die LinkedList Klasse systematisch testet.
 
Compilation:
javac -source 1.7 -encoding iso-8859-1 LinkedListTest.java
 
Testlauf:
java LinkedListTest

Letzte Änderung: 14.02.2012
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel