Implementation einer verketteten Liste ◦ Zusammenfassung ◦ ?

Das folgende Bild illustriert das Einfügen eines Elementes in eine verkettete Liste. Das neue Element wird an eine beliebige freie Stelle in den Speicher geschrieben, ohne die bereits vorhandenen Zellen zu verschieben. Das Einbinden in die bestehende Kette geschieht durch "Umbiegen" von Verweisen.

Der Nachteil verketteter Listen gegenüber Datenfeldern ist, dass die direkte Suche und damit auch die binäre Suche nicht möglich ist. Verkettete Listen müssen sequentiell durchsucht werden. Um ein Element zu erreichen, muss man am Anfang der Kette beginnen und den Verweisen folgen.

Verkettete Strukturen lassen sich in VBA mit Hilfe von Objekten und Objektverweisen implementieren. Die Zellen der verketteten Liste im Bild werden beispielsweise als Objekte mit zwei Eigenschaften dargestellt. Die erste Eigenschaft speichert den Inhalt und die Zweite den Verweis auf den Nachfolger. Die Beschreibung der Objekte im Klassenmodul ist rekursiv, da sie sich selbst in ihre Definition einbezieht.

Klassenmodul cZelle

    Public Inhalt As String         'Inhalt
    Public Nachfolger As cZelle     'Verweis auf Nachfolger

Der folgende Code baut die in Bild a dargestellt Liste auf. Die Objektvariable Anfang wird auf Modulebene vereinbart, damit nach Ausführung der Prozedur Test() auf die Liste zugegriffen werden kann. Die vier Objektvariablen Zelle1 bis Zelle4 werden dagegen nur vorübergehen für den Aufbau der Liste benötigt.

Standardmodul Prozeduren

    Private Anfang As cZelle

    Private Sub Test()
      Dim Zelle1 As cZelle          'für Element anna
      Dim Zelle2 As cZelle          'für Element beat
      Dim Zelle3 As cZelle          'für Element clara
      Dim Zelle4 As cZelle          'für Element david

      '--- Erstelle die Elemente der verketteten Liste
      Set Zelle1 = New cZelle
      Zelle1.Inhalt = "anna"
      Set Zelle2 = New cZelle
      Zelle2.Inhalt = "beat"
      Set Zelle3 = New cZelle
      Zelle3.Inhalt = "clara"
      Set Zelle4 = New cZelle
      Zelle4.Inhalt = "david"

      '--- Verkette die Elemente
      Set Anfang = Zelle1
      Set Zelle1.Nachfolger = Zelle2
      Set Zelle2.Nachfolger = Zelle3
      Set Zelle3.Nachfolger = Zelle4
    End Sub

verkettete Liste

©abo