Sök…


Introduktion

[TODO: Detta ämne bör vara ett exempel på alla de grundläggande CS 101-datastrukturerna tillsammans med någon förklaring som en översikt över hur datastrukturer kan implementeras i VBA. Detta skulle vara ett bra tillfälle att binda in och förstärka koncept som introducerats i klassrelaterade ämnen i VBA-dokumentation.]

Länkad lista

Detta exempel på länkad lista implementerar Ställ in abstrakta datatypsoperationer .

SinglyLinkedNode klass

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- klass

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ärt träd

Detta är ett exempel på ett obalanserat binärt sökträd . Ett binärt träd är konceptuellt strukturerat som en hierarki av noder som faller nedåt från en gemensam rot, där varje nod har två barn: vänster och höger. Antag till exempel att siffrorna 7, 5, 9, 3, 11, 6, 12, 14 och 15 infördes i en BinaryTree. Strukturen skulle vara som nedan. Observera att detta binära träd inte är balanserat , vilket kan vara ett önskvärt kännetecken för att garantera prestandan hos uppslagningar - se AVL-träd för ett exempel på ett självbalanserande binärt sökträd.

             7
            / \
           5   9
          / \   \
         3   6   11
                   \ 
                    12
                      \
                       14
                        \
                         15

BinaryTreeNode klass

Option Explicit

Public left As BinaryTreeNode
Public right As BinaryTreeNode
Public key As Variant
Public value As Variant

BinaryTree klass

[ATT GÖRA]



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow