Suche…


Einführung

[TODO: Dieses Thema sollte ein Beispiel für alle grundlegenden Datenstrukturen des CS 101 sein, zusammen mit einigen Erläuterungen als Überblick, wie Datenstrukturen in VBA implementiert werden können. Dies wäre eine gute Gelegenheit, Konzepte, die in klassenbezogenen Themen in der VBA-Dokumentation eingeführt wurden, zu knüpfen und zu verstärken.]

Verknüpfte Liste

Dieses Beispiel für eine verknüpfte Liste implementiert abstrakte Datentypvorgänge .

SinglyLinkedNode- Klasse

Option Explicit

Private Value As Variant
Private NextNode As SinglyLinkedNode '"Next" is a keyword in VBA and therefore is not a valid variable name

LinkedList- Klasse

Option Explicit

Private head As SinglyLinkedNode

'Set type operations

Public Sub Add(value As Variant)
    Dim node As SinglyLinkedNode
        
    Set node = New SinglyLinkedNode
    node.value = value
    Set node.nextNode = head
    
    Set head = node
End Sub

Public Sub Remove(value As Variant)
    Dim node As SinglyLinkedNode
    Dim prev As SinglyLinkedNode
    
    Set node = head
    
    While Not node Is Nothing
        If node.value = value Then
            'remove node
            If node Is head Then
                Set head = node.nextNode
            Else
                Set prev.nextNode = node.nextNode
            End If
            Exit Sub
        End If
        Set prev = node
        Set node = node.nextNode
    Wend

End Sub

Public Function Exists(value As Variant) As Boolean
    Dim node As SinglyLinkedNode
    
    Set node = head
    While Not node Is Nothing
        If node.value = value Then
            Exists = True
            Exit Function
        End If
        Set node = node.nextNode
    Wend
End Function

Public Function Count() As Long
    Dim node As SinglyLinkedNode
    
    Set node = head
    
    While Not node Is Nothing
        Count = Count + 1
        Set node = node.nextNode
    Wend
    
End Function

Binärer Baum

Dies ist ein Beispiel für einen unsymmetrischen binären Suchbaum . Ein binärer Baum ist konzeptionell als Hierarchie von Knoten strukturiert, die von einer gemeinsamen Wurzel abwärts absteigen, wobei jeder Knoten zwei untergeordnete Elemente hat: links und rechts. Angenommen, die Zahlen 7, 5, 9, 3, 11, 6, 12, 14 und 15 wurden in einen BinaryTree eingefügt. Die Struktur wäre wie folgt. Beachten Sie, dass dieser binäre Baum nicht abgeglichen ist. Dies kann eine wünschenswerte Eigenschaft sein, um die Leistung von Suchvorgängen zu gewährleisten. Ein Beispiel für einen selbstausgleichenden binären Suchbaum finden Sie in AVL-Bäume .

             7
            / \
           5   9
          / \   \
         3   6   11
                   \ 
                    12
                      \
                       14
                        \
                         15

BinaryTreeNode- Klasse

Option Explicit

Public left As BinaryTreeNode
Public right As BinaryTreeNode
Public key As Variant
Public value As Variant

BinaryTree- Klasse

[MACHEN]



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow