Skip to main content

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




Comment

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