Advertisement
nein_yards

Linked List Array Implementation 1.2

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