ListNode:
Public Class ListNode Public NodeData As Integer Public NextNode As ListNode Public PrevNode As ListNode End Class
ListNodeLib:
' 鏈結程式庫 Public Class ListNodeLib ' 首節點 Private Head As ListNode ' 尾節點 Private Tail As ListNode ' 建構子 Public Sub New() Me.Head = Nothing Me.Tail = Nothing End Sub ' 類別屬性 Public ReadOnly Property ListHead As ListNode Get Return Me.Head End Get End Property ' 類別屬性 Public ReadOnly Property ListTail As ListNode Get Return Me.Tail End Get End Property ' 加入節點函數 Public Sub Add(NewNode As ListNode) If Me.Head Is Nothing Then NewNode.NextNode = Nothing NewNode.PrevNode = Nothing Me.Head = NewNode Else NewNode.PrevNode = Me.Tail NewNode.NextNode = Nothing Me.Tail.NextNode = NewNode End If Me.Tail = NewNode End Sub ' 列印所有節點-FIFO Public Sub PrintList() Dim CurrNode As ListNode = Me.Head Dim i As Integer = 0 Do While Not (CurrNode Is Nothing) Console.Write("{0},{1}", CurrNode.NodeData, vbTab) CurrNode = CurrNode.NextNode Loop Console.WriteLine() End Sub ' 列印所有節點-FILO Public Sub PrintRevList() Dim CurrNode As ListNode = Me.Tail Dim i As Integer = 0 Do While Not (CurrNode Is Nothing) Console.Write("{0},{1}", CurrNode.NodeData, vbTab) CurrNode = CurrNode.PrevNode Loop Console.WriteLine() End Sub End Class
主程式:
Module ModuleW10 Private MyListNodeLib As ListNodeLib = New ListNodeLib() Sub Main() Dim NumArr() As Integer = {11, 21, 31, 1, 9, 8, 7} Dim CurrListNode As ListNode = Nothing For i = 0 To UBound(NumArr) CurrListNode = New ListNode CurrListNode.NodeData = NumArr(i) CurrListNode.NextNode = Nothing MyListNodeLib.Add(CurrListNode) Next MyListNodeLib.PrintList() MyListNodeLib.PrintRevList() Console.ReadKey() End Sub End Module