Szukaj…


Wprowadzenie

[DO ZROBIENIA: Ten temat powinien być przykładem wszystkich podstawowych struktur danych CS 101 wraz z wyjaśnieniem, w jaki sposób można zaimplementować struktury danych w VBA. Byłaby to dobra okazja do powiązania i wzmocnienia koncepcji wprowadzonych w tematach związanych z klasą w dokumentacji VBA.]

Połączona lista

Ten przykład połączonej listy implementuje operacje ustawiania abstrakcyjnego typu danych .

SinglyLinkedNode klasa

Option Explicit

Private Value As Variant
Private NextNode As SinglyLinkedNode '"Next" is a keyword in VBA and therefore is not a valid variable name

Klasa 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

Drzewo binarne

To jest przykład niezrównoważonego drzewa wyszukiwania binarnego . Drzewo binarne jest zbudowane koncepcyjnie jako hierarchia węzłów schodzących w dół od wspólnego katalogu głównego, gdzie każdy węzeł ma dwoje dzieci: lewą i prawą. Załóżmy na przykład, że liczby 7, 5, 9, 3, 11, 6, 12, 14 i 15 zostały wstawione do drzewa binarnego. Struktura byłaby jak poniżej. Zauważ, że to drzewo binarne nie jest zrównoważone , co może być pożądaną cechą gwarantującą wydajność wyszukiwania - patrz drzewa AVL, aby zobaczyć przykład drzewa binarnego wyszukiwania z równoważeniem.

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

Klasa BinaryTreeNode

Option Explicit

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

Klasa BinaryTree

[DO ZROBIENIA]



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow