(Einfach) Verkettete Listen lassen sich auch in Visual Basic sehr gut realisieren. Hier soll nun die grundsätzliche Vorgehensweise an einem sehr einfachen Beispiel gezeigt werden.
In dieses Beispiel soll eine Textliste (z.B. eine Namensliste) erstellt werden, wobei ein neuer Knoten immer nur an das Ende der Liste angehängt werden soll. Das Löschen eines einzelnen Knotens und das Scrollen wurde hier bewusst (noch) nicht realisiert. Die Abbildung am Ende dieses Kapitels zeigt das ausgeführte Programm.
Da auch Visual Basic eine objektorientierte Sprache ist, und daher das Konzept der Klassen sehr gut unterstützt, wurde auch dieses Beispiel mit Klassen realisiert. Auch hier wurde die gesamte Liste wieder mit zwei Klassen realisiert:
Anmerkung: Auch hier gilt, dass dies hier kein Visual-Basic-Kurs ist. Ich
beschreibe hier nur kurz die wesentlichen Punkte für eine mögliche Realisierung der
einfach verketteten Listen in Visual Basic (Version 6).
Ich gehe daher auch hier davon aus, dass der/die Leser(in) die Grundlagen von Visual
Basic kennt und diese auch beherrscht. Wenn nicht so empfehle ich die Bücher Jetzt
lerne ich Visual Basic [3], Visual Basic 6 - Grundlagen und Profiwissen
[4] und als Nachschlagerefernez das Buch Visual Basic 6 Referenz [5]. Auch im
Internet gibt es eine Fülle von Informationen zu Visual Basic. Hier sei nur [6]
erwähnt.
Auch in Visual Basic ist diese Klasse sehr einfach. (Datei
clsNodeE.pdf (35 KB)
). Sie beinhaltet nur die Membervariablen für die Daten (hier also
m_sValue, Zeile 18, für einen String) und den Zeiger
zum folgenden Knoten m_pNext, Zeile 20), einen
Konstruktor zur Initialisierung der Membervariablen (Zeilen 42 bis 47) einen Destruktor,
der hier eigentlich keine Aufgabe hat (Zeilen 61 und 62), und die Funktionen zum Setzen
und Auslesen dieser Membervariablen (Zeilen 66 bis 83).
Anmerkung zu den Zeilennummern: Die Zeilennummern sind auch hier nicht Bestandteil des Quellcodes. Sie dienen auch hier nur der besseren Orientierung.
Die KLasse clsLinkedListE
clsLinkedListE.pdf (71 KB)
ist auch hier schon etwas umfangreicher.
Diese Klasse realisiert die eigentliche verkettete Liste, wobei
hier nur das Hinzufügen eines neuen Knotens ans Ende der Liste (Zeilen 114 bis 140),
das Anzeigen der gesamten Liste in einer so genannten List-Box (Zeilen 167 bis 188)
und das Entfernen der gesamten Liste (Zeilen 225 bis 260) realisiert sind. Weiters den
Konstruktor zur Initialisierung der Membervariablen (Zeilen 40 bis 43) und einen
Destruktor zum Entfernen der gesamten Liste (Zeilen 58 bis 63).
Dieses Beispiel wurde bewusst so gewählt, da es nur die allerwichtigsten Funktionen
beinhalten soll, um das Prinzip der verketteten Liste auch in Visual Basic zu
demonstrieren.
Aufgrund der ausgiebigen Kommentar verzichte ich auch hier auf eine weitere Beschreibung.
Zu Beachten ist vielleicht, dass auch hier der Speicher für jedes Objekt, also für jeden Knoten, dynamisch angefordert wird, und dieser daher im Destruktor wieder an das Betriebssystem zurückgegeben werden muss. Im Gegensatz zu C++ gibt es in Visual Basic keine vordefinierte Funktion zum Entfernen von Objekten. In Visual Basic werden Objekte automatisch entfernt, wenn es zu diesem Objekt keine Referenzen mehr gibt. D.h. Wenn in Visual Basic ein Objekt geöscht werden soll, müssen alle Referenzen, die auf dieses Objekt zeigen mit "Nothing" geladen werden.
Auch das Demonstrationsbeispiel ist sehr einfach. Dazu wird ein einfaches Formular (hier: frmLinkedListE) mit den folgenden (Standard-)Steuerelemente benötigt:
Die folgende Abbildung zeigt die Anordnung dieser Steuerelemente.
So einfach wie das Formular ist, so einfach ist auch der Quellcode der dahintersteckt.
Die Datei
frmLinkedListE.pdf (28 KB)
zeigt das relativ kurze Programm.
Hier nur kurz die wesentlichen Punkte:
In der Ereignisprozedur Form_Load muss eine Instanz
der Verketteten Liste erzeugt werden (Zeilen 18 bis 21).
Das Hinzufügen eines neuen Knotens erfolgt durch das Anklicken der Taste
cmdNeueDaten (Zeilen 25 bis 30), und das Anzeigen der
gesamten Liste durch Anklicken der Taste cmdListeAnzeigen
(Zeilen 34 bis 39).
Die folgende Abbildung zeigt das erfolgreich kompilierte Programm in Aktion.