You are on page 1of 4

Imports System

Module Program
Structure Node
Dim Data As Integer
Dim Ptr As Integer
End Structure
Dim StartPtr As Integer = -1
Dim FreePtr As Integer = 0
Dim List(6) As Node
Sub Main(args As String())
Dim i, NewItem, c, sr As Integer
Initialise()
Do
Console.WriteLine("1. Enter Data to add as last item")
Console.WriteLine("2. Enter Data to add as start item")
Console.WriteLine("3. Search for Data")
Console.WriteLine("4. Delete Last Node")
Console.WriteLine("5. Delete First Node")
Console.WriteLine("6. Delete User input Node")
Console.WriteLine("7. Display Link List")
Console.WriteLine("8. Exit Program")
c = Console.ReadLine()
If c = 1 Then
Console.WriteLine()
Console.WriteLine("Enter New Data:")
NewItem = Console.ReadLine()
AddLastItem(NewItem)
Console.WriteLine()
ElseIf c = 2 Then
Console.WriteLine()
Console.WriteLine("Enter New Data:")
NewItem = Console.ReadLine()
AddStartItem(NewItem)
Console.WriteLine()
ElseIf c = 3 Then
Console.WriteLine()
Console.WriteLine("Enter value to be searched:")
sr = Console.ReadLine()
If SearchItem(sr) = -1 Then
Console.WriteLine("Item not found")
Else
Console.WriteLine("Data found at position " & SearchItem(sr))
End If
Console.WriteLine()
ElseIf c = 4 Then
Console.WriteLine()
DelLastNode()
Console.WriteLine()
ElseIf c = 5 Then
Console.WriteLine()
DelFirstNode()
Console.WriteLine()
ElseIf c = 6 Then
Console.WriteLine()
Console.WriteLine("Enter data to be deleted:")
sr = Console.ReadLine()
DelUserNode(sr)
Console.WriteLine()
ElseIf c = 7 Then
Console.WriteLine()
Output()
Console.WriteLine()
End If
Loop Until c = 8
Console.ReadKey()
End Sub
Sub Initialise()
Dim i As Integer
For i = 0 To 5
List(i).Ptr = i + 1
Next
List(6).Ptr = -1
End Sub
Sub AddLastItem(NewItem As Integer)
Dim NewPtr, CurrentPtr, PreviousPtr As Integer
If FreePtr = -1 Then
Console.WriteLine("List Full")
Else
NewPtr = FreePtr
If StartPtr = -1 Then
StartPtr = FreePtr
Else
CurrentPtr = StartPtr
While CurrentPtr <> -1
PreviousPtr = CurrentPtr
CurrentPtr = List(CurrentPtr).Ptr
End While
List(PreviousPtr).Ptr = NewPtr
End If
List(NewPtr).Data = NewItem
FreePtr = List(NewPtr).Ptr
List(NewPtr).Ptr = -1
Console.WriteLine("Data successfully added")
End If
End Sub
Sub AddStartItem(NewItem As Integer)
If FreePtr = -1 Then
Console.WriteLine("List Full")
Else
Dim NewPtr As Integer
NewPtr = FreePtr
List(NewPtr).Data = NewItem
FreePtr = List(NewPtr).Ptr
If StartPtr = -1 Then
StartPtr = NewPtr
List(NewPtr).Ptr = -1
Else
List(NewPtr).Ptr = StartPtr
StartPtr = NewPtr
End If
Console.WriteLine("Data successfully added")
End If
End Sub
Function SearchItem(item As Integer)
For i = 0 To 6
If List(i).Data = item Then
Return i
End If
Next
Return -1
End Function
Sub Output()
Dim NextPtr As Integer = StartPtr
While NextPtr <> -1
Console.WriteLine(NextPtr & " : " & List(NextPtr).Data & " | " &
List(NextPtr).Ptr)
NextPtr = List(NextPtr).Ptr
End While
End Sub
Sub DelLastNode()
If StartPtr = -1 Then
Console.WriteLine("List Empty")
Else
If List(StartPtr).Ptr = -1 Then
StartPtr = -1
FreePtr = 0
Else
Dim CurrentPtr, PreviousPtr As Integer
CurrentPtr = StartPtr
While CurrentPtr <> -1
If List(CurrentPtr).Ptr <> -1 Then
PreviousPtr = CurrentPtr
End If
CurrentPtr = List(CurrentPtr).Ptr
End While
List(PreviousPtr).Ptr = -1
End If
End If
End Sub
Sub DelFirstNode()
If StartPtr = -1 Then
Console.WriteLine("List Empty")
Else
If List(StartPtr).Ptr = -1 Then
StartPtr = -1
FreePtr = 0
Else
Dim temp As Integer
temp = List(StartPtr).Ptr
List(StartPtr).Ptr = -1
StartPtr = temp
End If
End If
End Sub
Sub DelUserNode(data As Integer)
Dim NextPtr, CurrentPtr, PrevPtr As Integer
CurrentPtr = SearchItem(data)
NextPtr = List(CurrentPtr).Ptr
List(CurrentPtr).Ptr = -1
For i = 0 To 6
If List(i).Ptr = CurrentPtr Then
PrevPtr = i
End If
Next
List(PrevPtr).Ptr = NextPtr
End Sub
End Module

You might also like