Zoeken…
Invoering
[TODO: dit onderwerp zou een voorbeeld moeten zijn van alle basis CS 101-datastructuren, samen met enige uitleg als een overzicht van hoe datastructuren in VBA kunnen worden geïmplementeerd. Dit zou een goede gelegenheid zijn om concepten te integreren en te versterken die zijn geïntroduceerd in Klasse-gerelateerde onderwerpen in VBA-documentatie.]
Gekoppelde lijst
In dit voorbeeld van een gekoppelde lijst worden bewerkingen voor abstracte gegevenstypes ingesteld .
Klasse SinglyLinkedNode
Option Explicit
Private Value As Variant
Private NextNode As SinglyLinkedNode '"Next" is a keyword in VBA and therefore is not a valid variable name
Klasse LinkedList
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
Binaire boom
Dit is een voorbeeld van een ongebalanceerde binaire zoekboom . Een binaire boom is conceptueel gestructureerd als een hiërarchie van knooppunten die naar beneden afdalen vanaf een gemeenschappelijke wortel, waarbij elke knoop twee kinderen heeft: links en rechts. Stel bijvoorbeeld dat de nummers 7, 5, 9, 3, 11, 6, 12, 14 en 15 in een BinaryTree zijn ingevoegd. De structuur zou zijn zoals hieronder. Merk op dat deze binaire boom niet gebalanceerd is , wat een wenselijk kenmerk kan zijn om de prestaties van opzoekingen te garanderen - zie AVL-bomen voor een voorbeeld van een zelfbalancerende binaire zoekboom.
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
[TE DOEN]