VBA
Structures de données
Recherche…
Introduction
[TODO: Cette rubrique devrait être un exemple de toutes les structures de données de base du CS 101, accompagnée d'explications expliquant comment les structures de données peuvent être implémentées dans VBA. Ce serait une bonne occasion de lier et de renforcer les concepts introduits dans les rubriques relatives aux classes dans la documentation VBA.]
Liste liée
Cet exemple de liste chaînée implémente les opérations de type de données abstraites définies .
Classe 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
Classe 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
Arbre binaire
Voici un exemple d' arbre de recherche binaire déséquilibré. Un arbre binaire est structuré conceptuellement comme une hiérarchie de nœuds descendant depuis une racine commune, où chaque nœud a deux enfants: gauche et droite. Par exemple, supposons que les nombres 7, 5, 9, 3, 11, 6, 12, 14 et 15 ont été insérés dans un BinaryTree. La structure serait comme ci-dessous. Notez que cet arbre binaire n'est pas équilibré , ce qui peut être une caractéristique souhaitable pour garantir les performances des recherches - voir les arborescences AVL pour un exemple d'arbre de recherche binaire à équilibrage automatique.
7
/ \
5 9
/ \ \
3 6 11
\
12
\
14
\
15
Classe BinaryTreeNode
Option Explicit
Public left As BinaryTreeNode
Public right As BinaryTreeNode
Public key As Variant
Public value As Variant
Classe BinaryTree
[FAIRE]