Ricerca…


introduzione

[TODO: Questo argomento dovrebbe essere un esempio di tutte le strutture di dati CS 101 di base insieme ad alcune spiegazioni come una panoramica di come le strutture dati possono essere implementate in VBA. Questa sarebbe una buona opportunità per legare e rafforzare i concetti introdotti negli argomenti relativi alla Classe nella documentazione VBA.]

Lista collegata

Questo esempio di elenco collegato implementa le operazioni sui tipi di dati astratti .

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

Albero binario

Questo è un esempio di albero di ricerca binaria sbilanciato. Un albero binario è strutturato concettualmente come una gerarchia di nodi discendente verso il basso da una radice comune, in cui ogni nodo ha due figli: sinistra e destra. Ad esempio, supponiamo che i numeri 7, 5, 9, 3, 11, 6, 12, 14 e 15 siano stati inseriti in un BinaryTree. La struttura sarebbe come qui sotto. Si noti che questo albero binario non è bilanciato , il che può essere una caratteristica auspicabile per garantire le prestazioni delle ricerche - vedi gli alberi AVL per un esempio di albero di ricerca binaria autobilanciante.

             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

[FARE]



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow