VBA
Estructuras de datos
Buscar..
Introducción
[TODO: Este tema debe ser un ejemplo de todas las estructuras de datos básicas de CS 101 junto con una explicación como una descripción general de cómo se pueden implementar las estructuras de datos en VBA. Esta sería una buena oportunidad para vincular y reforzar los conceptos introducidos en los temas relacionados con la Clase en la documentación de VBA.]
Lista enlazada
Este ejemplo de lista enlazada implementa operaciones de tipos de datos abstractos establecidos .
Clase 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
Clase 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
Árbol binario
Este es un ejemplo de un árbol de búsqueda binario desequilibrado. Un árbol binario se estructura conceptualmente como una jerarquía de nodos que descienden hacia abajo desde una raíz común, donde cada nodo tiene dos hijos: izquierdo y derecho. Por ejemplo, supongamos que los números 7, 5, 9, 3, 11, 6, 12, 14 y 15 se insertaron en un BinaryTree. La estructura sería la siguiente. Tenga en cuenta que este árbol binario no está equilibrado , lo que puede ser una característica deseable para garantizar el rendimiento de las búsquedas; consulte los árboles AVL para ver un ejemplo de un árbol de búsqueda binaria con equilibrio automático.
7
/ \
5 9
/ \ \
3 6 11
\
12
\
14
\
15
Clase BinaryTreeNode
Option Explicit
Public left As BinaryTreeNode
Public right As BinaryTreeNode
Public key As Variant
Public value As Variant
Clase binario
[QUE HACER]