Advertisement
nein_yards

Ordered Linked List Array Implementation 1.0

Jun 3rd, 2020
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.64 KB | None | 0 0
  1. Module Module1
  2. Structure Node
  3. Dim data As Integer
  4. Dim nxt As Integer
  5. End Structure
  6. Const nullPointer As Integer = -1
  7. Class LinkedListType
  8. Private head,
  9. freeListPointer,
  10. size As Integer
  11. Public node As Node()
  12. Public Sub New(size As Integer)
  13. Me.size = size
  14. If size < 0 Then : Exit Sub : End If
  15. ReDim node(size)
  16. head = nullPointer
  17. freeListPointer = 0
  18. For i = 0 To size
  19. node(i).nxt = i + 1
  20. Next
  21. node(size).nxt = nullPointer
  22. End Sub
  23. Public Sub InsertNode(data As Integer)
  24. If size < 0 Then : Exit Sub : End If
  25. Dim newPointer,
  26. previousPointer,
  27. currentPointer As Integer
  28. If freeListPointer <> nullPointer Then 'is it full?
  29.  
  30. newPointer = freeListPointer
  31. freeListPointer = node(freeListPointer).nxt
  32. node(newPointer).data = data
  33.  
  34. 'assign free pointer to new pointer
  35. 'free pointer moved forward and data assigned
  36.  
  37. currentPointer = head 'for traversing
  38.  
  39. While currentPointer <> nullPointer
  40. If node(currentPointer).data > data Then
  41. Exit While : End If
  42. previousPointer = currentPointer
  43. currentPointer = node(currentPointer).nxt
  44. End While
  45.  
  46. If currentPointer = head Then
  47. node(newPointer).nxt = head
  48. head = newPointer
  49. Else
  50. node(newPointer).nxt = node(previousPointer).nxt
  51. node(previousPointer).nxt = newPointer
  52. End If
  53. Else : Console.WriteLine("ARRAY BOUNDS EXCEEDED")
  54. End If
  55. End Sub
  56. Public Sub PrintList()
  57. Dim currentPointer As Integer = head
  58. While currentPointer <> nullPointer
  59. Console.Write(node(currentPointer).data)
  60. currentPointer = node(currentPointer).nxt
  61. If currentPointer <> nullPointer Then
  62. Console.Write(" -> ") : End If
  63. End While
  64. Console.WriteLine()
  65. End Sub
  66. End Class
  67. Sub Main()
  68. Dim myList As New LinkedListType(4)
  69. myList.InsertNode(1)
  70. myList.InsertNode(19)
  71. myList.InsertNode(5)
  72. myList.InsertNode(23)
  73. myList.InsertNode(12)
  74. myList.PrintList()
  75. Console.ReadLine()
  76. End Sub
  77. End Module
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement