Skip to main content

construct a linked list from 2d matrix in vb.net

Vb program for construct a linked list from 2d matrix. Here more information.

' Include namespace system
Imports System 
'  Vb.net program for
'  Construct a linked list from 2D matrix
Public Class LinkNode 
    Public  data As Integer
    Public  [next] As LinkNode
    Public  down As LinkNode
    
    Public Sub New(ByVal data As Integer)
        
        Me.data = data
        Me.next = Nothing
        Me.down = Nothing
    
    End Sub

End Class
public Class DoublyLinkedList 
    Public  head As LinkNode
    
    Public Sub New()
        
        '  Set inital value
        Me.head = Nothing
    
    End Sub
    
    Public Sub display()
        if (Me.head  Is  Nothing) Then 
            Console.Write("Empty linked list")
        Else 
            Dim front As LinkNode = Me.head
            Dim right As LinkNode = Nothing
            while (front IsNot Nothing) 
                right = front
                while (right IsNot Nothing) 
                    Console.Write(right.data.ToString() + "  ")
                    right = right.[next]
                End While
                Console.Write( vbLf )
                '  Visit to down node
                front = front.down
            End While
        End IF

    
    End Sub
    
    Public Sub insertData(ByVal matrix As Integer(,), 
      ByVal rows As Integer, ByVal cols As Integer)
        '  Some auxiliary variables
        Dim levelHead As LinkNode = Nothing
        Dim root As LinkNode = Nothing
        Dim perv As LinkNode = Nothing
        Dim i As Integer = 0
        Dim j As Integer = 0
        '  Add first row elements into result list 
        
        while (i < cols) 
        
            if (Me.head  Is  Nothing) Then 
                '  Add first node
                Me.head = New LinkNode(matrix(0,i))
                levelHead = Me.head
            Else 
                '  next head
                levelHead.[next] = New LinkNode(matrix(0,i))
                levelHead = levelHead.[next]
            End IF

            i += 1
        End While
        '  Get first element    
        levelHead = Me.head
        i = 1
        '  Add all the bottom element of each column
        
        while (i < rows) 
        
            root = Nothing
            perv = root
            
            while (j < cols) 
            
                levelHead.down = New LinkNode(matrix(i,j))
                if (root  Is  Nothing) Then 
                    root = levelHead.down
                    perv = root
                Else 
                    perv.[next] = levelHead.down
                    perv = levelHead.down
                End IF

                levelHead = levelHead.[next]
                j += 1
            End While
            levelHead = root
            '  reset col
            j = 0
            '  change row
            i += 1
        End While
    
    End Sub
    
    Public Shared Sub Main(ByVal args As String())
        Dim dll As DoublyLinkedList = New DoublyLinkedList()
        '  Create 2D metrix
        Dim matrix As Integer(,) = 
        {
          {1, 6, 9, 2, -9}, 
          {2, 5, -5, 7, 1}, 
          {3, 4, 1, 8, 2}
		}
        Dim rows As Integer = matrix.GetLength(0)
        Dim cols As Integer = matrix.GetLength(1)
        dll.insertData(matrix, rows, cols)
        dll.display()
    
    End Sub

End Class

Output

1  6  9  2  -9
2  5  -5  7  1
3  4  1  8  2




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