Delete all prime nodes from a singly linked list in vb.net
Vb program for Delete all prime nodes from a singly linked list. Here problem description and explanation.
' Include namespace system
Imports System
' Vb.net Program for
' Delete all prime nodes in linked list
' Linked list node
Public Class LinkNode
Public data As Integer
Public [next] As LinkNode
Public Sub New(ByVal data As Integer)
Me.data = data
Me.next = Nothing
End Sub
End Class
public Class SingleLL
Public head As LinkNode
Public Sub New()
' Set initial value
Me.head = Nothing
End Sub
' Add new node at the end of linked list
Public Sub addNode(ByVal value As Integer)
' Create new node
Dim node As LinkNode = New LinkNode(value)
if (Me.head Is Nothing) Then
Me.head = node
Else
Dim temp As LinkNode = Me.head
' Find last node
while (temp.[next] IsNot Nothing)
' Visit to next node
temp = temp.[next]
End While
' Add node at last position
temp.[next] = node
End IF
End Sub
' Display all Linked List elements
Public Sub display()
if (Me.head IsNot Nothing) Then
' Get start node
Dim temp As LinkNode = Me.head
while (temp IsNot Nothing)
' Display node value
Console.Write(" " + temp.data.ToString())
' Visit to next node
temp = temp.[next]
End While
Else
Console.Write("Empty Linked list" & vbLf )
End IF
End Sub
' Return given value is prime or not
Public Function checkPrime(ByVal value As Integer) As Boolean
if (value = 1) Then
Return False
Else
Dim i As Integer = 2
While i <= (value / 2)
' Check whether value is prime or not
if (value Mod i = 0) Then
Return False
End If
i += 1
End While
Return True
End IF
End Function
Public Sub delelePrimeNode()
if (Me.head Is Nothing) Then
Console.WriteLine("Empty linked List")
Else
' Auxiliary variables
Dim temp As LinkNode = Me.head
Dim hold As LinkNode = Nothing
Dim prev As LinkNode = Nothing
' Iterating and find prime nodes
while (temp IsNot Nothing)
if (Me.checkPrime(temp.data)) Then
' Is prime node
hold = temp
Else
prev = temp
End IF
' Visit to next node
temp = temp.[next]
if (hold IsNot Nothing) Then
if (hold Is Me.head) Then
' When delete head node
Me.head = temp
hold = Nothing
Else
if (prev IsNot Nothing) Then
prev.[next] = temp
End If
hold = Nothing
End IF
End If
End While
End IF
End Sub
Public Shared Sub Main(ByVal args As String())
Dim sll As SingleLL = New SingleLL()
' Linked list
' 7 → 1 → 8 → 2 → 4 → 23 → 37 → NULL
sll.addNode(7)
sll.addNode(1)
sll.addNode(8)
sll.addNode(2)
sll.addNode(4)
sll.addNode(23)
sll.addNode(37)
Console.WriteLine(" Before Delete prime nodes ")
sll.display()
sll.delelePrimeNode()
Console.WriteLine(vbLf & " After Delete prime nodes ")
sll.display()
End Sub
End Class
Output
Before Delete prime nodes
7 1 8 2 4 23 37
After Delete prime nodes
1 8 4
Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.
New Comment