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]