Alternating split of singly linked list in vb.net
Vb program for Alternating split of singly linked list. Here problem description and other solutions.
' Include namespace system
Imports System
' Vb.net program for
' Alternating split of a given singly linked list
' Node of LinkedList
Public Class LinkNode
Public data As Integer
Public [next] As LinkNode
Public Sub New(ByVal data As Integer)
' Set node value
Me.data = data
Me.next = Nothing
End Sub
End Class
Public Class MyLinkedList
Public head As LinkNode
Public Sub New()
Me.head = Nothing
End Sub
' Add new node at the end of linked list
Public Sub insert(ByVal value As Integer)
' Create a 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.WriteLine("Empty Linked list")
End IF
End Sub
' Split the linked list by alternating nodes
Public Function splitting() As LinkNode
Dim result As LinkNode = Nothing
if (Me.head IsNot Nothing) Then
' Some auxiliary variables
Dim temp As LinkNode = Me.head
Dim tail As LinkNode = Nothing
Dim current As LinkNode = Nothing
Dim prev As LinkNode = Me.head
while (temp IsNot Nothing AndAlso temp.[next] IsNot Nothing)
current = temp.[next]
prev = temp
temp = temp.[next].[next]
if (result Is Nothing) Then
' When first node of second linked list
current.[next] = result
result = current
tail = current
Else
' Add Alternating node to end of
' second linked list
current.[next] = tail.[next]
tail.[next] = current
tail = current
End IF
prev.[next] = temp
End While
End If
Return result
End Function
Public Shared Sub Main(ByVal args As String())
Dim l1 As MyLinkedList = New MyLinkedList()
Dim l2 As MyLinkedList = New MyLinkedList()
' Add node in l1 linked list
l1.insert(1)
l1.insert(2)
l1.insert(3)
l1.insert(4)
l1.insert(5)
l1.insert(6)
l1.insert(7)
l1.insert(8)
' Before splitting l1
Console.Write("L1 list : ")
l1.display()
l2.head = l1.splitting()
Console.WriteLine( vbLf &"After splitting ")
Console.Write("L1 list : ")
l1.display()
Console.Write( vbLf &"L2 list : ")
l2.display()
End Sub
End Class
Output
L1 list : 1 2 3 4 5 6 7 8
After splitting
L1 list : 1 3 5 7
L2 list : 2 4 6 8
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