Segregate even and odd nodes in sorted order in ruby
Ruby program for Segregate even and odd nodes in sorted order. Here more information.
# Ruby program for
# Segregate even and odd nodes in ascending order
# Linked list node
class LinkNode
# Define the accessor and reader of class LinkNode
attr_reader :data, :next
attr_accessor :data, :next
def initialize(data)
self.data = data
self.next = nil
end
end
class SingleLL
# Define the accessor and reader of class SingleLL
attr_reader :head
attr_accessor :head
def initialize()
self.head = nil
end
# Add new node at the end of linked list
def insert(value)
# Create node
node = LinkNode.new(value)
if (self.head == nil)
self.head = node
else
temp = self.head
# Find last node
while (temp.next != nil)
# Visit to next node
temp = temp.next
end
# Add node at last position
temp.next = node
end
end
# Display all Linked List elements
def display()
if (self.head != nil)
temp = self.head
while (temp != nil)
# Display node value
print(" ", temp.data)
# Visit to next node
temp = temp.next
end
else
print("Empty Linked list\n")
end
end
def sortedAdd(element)
if (self.head == nil)
self.head = element
elsif(self.head.data >= element.data)
element.next = self.head
self.head = element
else
temp = self.head
# Finding location of inserting node
while (temp.next != nil &&
temp.next.data < element.data)
# Visit to next node
temp = temp.next
end
# Add node
element.next = temp.next
temp.next = element
end
end
def segregateNode(odd, even)
node = nil
# Iterating the linked list node
while (self.head != nil)
node = self.head
# Visit to next node
self.head = node.next
# Set null to next node
node.next = nil
if (node.data % 2 == 0)
# When node value is Even
even.sortedAdd(node)
else
# When node value is Odd
odd.sortedAdd(node)
end
end
end
end
def main()
# Create linked lists
sll = SingleLL.new()
odd = SingleLL.new()
even = SingleLL.new()
# Linked list sll
# 4 → 3 → 5 → 2 → 11 → 1 → 6 → NULL
sll.insert(4)
sll.insert(3)
sll.insert(5)
sll.insert(2)
sll.insert(11)
sll.insert(1)
sll.insert(6)
print("Initial Element\n")
# Display all node
sll.display()
sll.segregateNode(odd, even)
print("\nEven Element\n")
# Display all even node
even.display()
print("\nOdd Element\n")
# Display all odd node
odd.display()
end
main()
Output
Initial Element
4 3 5 2 11 1 6
Even Element
2 4 6
Odd Element
1 3 5 11
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