Segregate even and odd nodes of a linked list in vb.net
Vb program for Segregate even and odd nodes of a linked list. Here problem description and explanation.
' Include namespace system
Imports System
' Vb.net Program for
' Segregate even and odd 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()
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
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
' Segregate even and odd element of linked list
Public Sub segregate()
if (Me.head IsNot Nothing) Then
Dim temp As LinkNode = Me.head
Dim hold As LinkNode = Nothing
Dim odd As LinkNode = Nothing
Me.head = Nothing
' Separates nodes
while (temp IsNot Nothing)
hold = temp
temp = temp.[next]
if (hold.data Mod 2 = 0) Then
' Gets even nodes
hold.[next] = Me.head
Me.head = hold
Else
' Gets odd nodes
hold.[next] = odd
odd = hold
End IF
End While
if (Me.head IsNot Nothing) Then
' Even node are exist
temp = Me.head
while (temp.[next] IsNot Nothing)
temp = temp.[next]
End While
' Add remaining odd nodes
temp.[next] = odd
Else
' When only odd nodes
Me.head = odd
End IF
End If
End Sub
Public Shared Sub Main(ByVal args As String())
Dim sll As SingleLL = New SingleLL()
' Create Linked List
' 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 10 → NULL
sll.addNode(1)
sll.addNode(2)
sll.addNode(3)
sll.addNode(4)
sll.addNode(5)
sll.addNode(6)
sll.addNode(7)
sll.addNode(8)
sll.addNode(10)
Console.WriteLine(" Before segregate list ")
sll.display()
sll.segregate()
Console.WriteLine(vbLf &" After segregate list ")
sll.display()
End Sub
End Class
Output
Before segregate list
1 2 3 4 5 6 7 8 10
After segregate list
10 8 6 4 2 7 5 3 1
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