Dim CurrentNodePtr As Integer
Console.Write("Enter the value: ")
Data = Console.ReadLine()
Console.Write("Enter the value: ")
Data = Console.ReadLine()
Console.Write("Enter the value: ")
Data = Console.ReadLine()
CurrentNodePTr = SearchNode(Data)
Console.WriteLine("Pointer: " & SearchNode(Data))
Console.WriteLine("Press any key to continue...")
Console.WriteLine("==========================")
Console.WriteLine(" Linked List Menu")
Console.WriteLine("==========================")
Console.WriteLine("Press 1: Add")
Console.WriteLine(" 2: Delete")
Console.WriteLine(" 3: Search")
Console.WriteLine(" 4: Display List")
Console.WriteLine(" 5: Exit")
Console.WriteLine("==========================")
Console.Write("Enter your choice: ")
Choice = Console.ReadLine()
Dim StartPointer As Integer
Dim FreeListPtr As Integer
StartPointer = NULLPOINTER
For Index = 0 To List.Length - 1
List(Index).Pointer = Index + 1
List(List.Length - 1).Pointer = NULLPOINTER
Dim ThisNodePtr, NewNodeIndex, PreviousNodePtr As Integer
If FreeListPtr <> NULLPOINTER Then
NewNodeIndex = FreeListPtr
List(NewNodeIndex).Data = NewItem
FreeListPtr = List(FreeListPtr).Pointer
PreviousNodePtr = NULLPOINTER
ThisNodePtr = StartPointer
Do While (ThisNodePtr <> NULLPOINTER) And (List(ThisNodePtr).Data < NewItem)
PreviousNodePtr = ThisNodePtr
ThisNodePtr = List(ThisNodePtr).Pointer
If PreviousNodePtr = NULLPOINTER Then
List(NewNodeIndex).Pointer = StartPointer
StartPointer = NewNodeIndex
List(NewNodeIndex).Pointer = List(PreviousNodePtr).Pointer
List(PreviousNodePtr).Pointer = NewNodeIndex
console.writeline("no space for more data")
Function SearchNode(DataItem) As Integer
Dim CurrentNodePtr As Integer
CurrentNodePtr = StartPointer
Do While CurrentNodePtr <> NULLPOINTER And List(CurrentNodePtr).Data <> DataItem
Console.WriteLine(CurrentNodePtr)
CurrentNodePtr = List(CurrentNodePtr).Pointer
Console.WriteLine("data not found")
Dim ThisNodePtr, PreviousNodePtr As Integer
ThisNodePtr = StartPointer
Do While ThisNodePtr <> NULLPOINTER And List(ThisNodePtr).Data <> DataItem
PreviousNodePtr = ThisNodePtr
ThisNodePtr = List(ThisNodePtr).Pointer
Console.WriteLine("data does not exist in list")
If ThisNodePtr <> NULLPOINTER Then
If ThisNodePtr = StartPointer Then
StartPointer = List(StartPointer).Pointer
List(PreviousNodePtr).Pointer = List(ThisNodePtr).Pointer
List(ThisNodePtr).Pointer = FreeListPtr
FreeListPtr = ThisNodePtr
Dim CurrentNodePtr As Integer
CurrentNodePtr = StartPointer
If StartPointer = NULLPOINTER Then
Console.WriteLine("==========================")
Console.WriteLine("| No data in list |")
Console.WriteLine("==========================")
Console.WriteLine("===========================")
Console.WriteLine("| Index | Value | Pointer |")
Console.WriteLine("===========================")
Do While CurrentNodePtr <> NULLPOINTER
Console.WriteLine(CurrentNodePtr & " " & List(CurrentNodePtr).Data & " " & List(CurrentNodePtr).Pointer)
CurrentNodePtr = List(CurrentNodePtr).Pointer