construct a linked list from 2d matrix in ruby
Ruby program for construct a linked list from 2d matrix. Here problem description and explanation.
# Ruby program for
# Construct a linked list from 2D matrix
class LinkNode
# Define the accessor and reader of class LinkNode
attr_reader :data, :next, :down
attr_accessor :data, :next, :down
def initialize(data)
self.data = data
self.next = nil
self.down = nil
end
end
class DoublyLinkedList
# Define the accessor and reader of class DoublyLinkedList
attr_reader :head
attr_accessor :head
def initialize()
self.head = nil
end
def display()
if (self.head == nil)
print("Empty linked list")
else
front = self.head
right = nil
while (front != nil)
right = front
while (right != nil)
print(right.data ," ")
right = right.next
end
print("\n")
# Visit to down node
front = front.down
end
end
end
def insertData(matrix, rows, cols)
# Some auxiliary variables
levelHead = nil
root = nil
perv = nil
i = 0
j = 0
# Add first row elements into result list
while (i < cols)
if (self.head == nil)
# Add first node
self.head = LinkNode.new(matrix[0][i])
levelHead = self.head
else
# next head
levelHead.next = LinkNode.new(matrix[0][i])
levelHead = levelHead.next
end
i += 1
end
# Get first element
levelHead = self.head
i = 1
# Add all the bottom element of each column
while (i < rows)
root = nil
perv = root
while (j < cols)
levelHead.down = LinkNode.new(matrix[i][j])
if (root == nil)
root = levelHead.down
perv = root
else
perv.next = levelHead.down
perv = levelHead.down
end
levelHead = levelHead.next
j += 1
end
levelHead = root
# reset col
j = 0
# change row
i += 1
end
end
end
def main()
dll = DoublyLinkedList.new()
# Create 2D metrix
matrix = [
[1, 6, 9, 2, -9],
[2, 5, -5, 7, 1],
[3, 4, 1, 8, 2]
]
rows = matrix.length
cols = matrix[0].length
dll.insertData(matrix, rows, cols)
dll.display()
end
main()
Output
1 6 9 2 -9
2 5 -5 7 1
3 4 1 8 2
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