Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Module Module1
- Structure Node
- Dim data As Integer
- Dim nxt As Integer
- End Structure
- Const nullPointer As Integer = -1
- Class OrderedLinkedList
- Private head,
- freeListPointer,
- size As Integer
- Public node As Node()
- Public Sub New(size As Integer)
- Me.size = size
- If size < 0 Then : Exit Sub : End If
- ReDim node(size)
- head = nullPointer
- freeListPointer = 0
- For i = 0 To size - 1
- node(i).nxt = i + 1
- Next
- node(size).nxt = nullPointer
- End Sub
- Public Sub InsertNode(data As Integer)
- If size < 0 Then : Exit Sub : End If
- Dim newPointer,
- previousPointer,
- currentPointer As Integer
- If freeListPointer <> nullPointer Then
- newPointer = freeListPointer
- freeListPointer = node(freeListPointer).nxt
- node(newPointer).data = data
- currentPointer = head
- While currentPointer <> nullPointer
- If node(currentPointer).data > data Then
- Exit While : End If
- previousPointer = currentPointer
- currentPointer = node(currentPointer).nxt
- End While
- If currentPointer = head Then
- node(newPointer).nxt = head
- head = newPointer
- Else
- node(newPointer).nxt = node(previousPointer).nxt
- node(previousPointer).nxt = newPointer
- End If
- Else : Console.WriteLine("ARRAY BOUNDS EXCEEDED")
- End If
- End Sub
- Public Sub DeleteNode(data As Integer)
- If size < 0 Then : Exit Sub : End If
- Dim previousPointer,
- currentPointer As Integer
- Dim deleteFound As Boolean = False
- If head <> nullPointer Then
- currentPointer = head
- While currentPointer <> nullPointer And
- Not deleteFound
- If node(currentPointer).data = data Then
- deleteFound = True
- Else
- previousPointer = currentPointer
- currentPointer = node(currentPointer).nxt
- End If
- End While
- If Not deleteFound Then : Exit Sub : End If
- freeListPointer = currentPointer
- If currentPointer = head Then
- head = node(currentPointer).nxt
- Else
- node(previousPointer).nxt = node(currentPointer).nxt
- End If
- Else : Console.WriteLine("ARRAY IS EMPTY - DELETION IMPOSSIBLE")
- End If
- End Sub
- Public Sub PrintList()
- Dim currentPointer As Integer = head
- While currentPointer <> nullPointer
- Console.Write(node(currentPointer).data)
- currentPointer = node(currentPointer).nxt
- If currentPointer <> nullPointer Then
- Console.Write(" -> ") : End If
- End While
- Console.WriteLine()
- End Sub
- Public Function FindNode(data As Integer) As Integer
- If size < 0 Then : Return nullPointer : End If
- Dim currentPointer As Integer
- Dim nodeFound As Boolean = False
- If head <> nullPointer Then
- currentPointer = head
- While currentPointer <> nullPointer And
- Not nodeFound
- If node(currentPointer).data = data Then
- nodeFound = True
- Else
- currentPointer = node(currentPointer).nxt
- End If
- End While
- If nodeFound Then
- Return currentPointer
- End If
- End If
- Return nullPointer
- End Function
- End Class
- Sub Main()
- Dim myList As New OrderedLinkedList(3)
- myList.InsertNode(110)
- myList.InsertNode(100)
- myList.InsertNode(60)
- myList.InsertNode(160)
- myList.PrintList()
- Console.ReadLine()
- End Sub
- End Module
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement