サーチ…
前書き
[TODO:このトピックは、すべての基本的なCS101データ構造の例であり、VBAでのデータ構造の実装方法の概要を説明するものです。これは、VBAドキュメントのクラス関連トピックに導入された概念を結びつけ、補強する良い機会になります。]
リンクされたリスト
このリンクされたリストの例は、 Set抽象データ型操作を実装しています。
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
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
バイナリツリー
これは、アンバランスなバイナリ検索ツリーの例です 。バイナリツリーは概念的に、共通ルートから下に下がるノードの階層として構成されています。各ノードには、左と右の2つの子があります。たとえば、番号7,5,9,3,11,6,12,14、および15がBinaryTreeに挿入されたとします。構造は以下のようになります。このバイナリツリーはバランスがとれておらず、ルックアップのパフォーマンスを保証する上で望ましい特性になり得ることに注意してください。自己平衡バイナリ検索ツリーの例としてAVLツリーを参照してください。
7
/ \
5 9
/ \ \
3 6 11
\
12
\
14
\
15
BinaryTreeNodeクラス
Option Explicit
Public left As BinaryTreeNode
Public right As BinaryTreeNode
Public key As Variant
Public value As Variant
BinaryTreeクラス
[TODO]
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow