Segregate even and odd nodes in sorted order in c#
Csharp program for Segregate even and odd nodes in sorted order. Here more information.
// Include namespace system
using System;
// Csharp program for
// Segregate even and odd nodes in ascending order
// Linked list node
public class LinkNode
{
public int data;
public LinkNode next;
public LinkNode(int data)
{
this.data = data;
this.next = null;
}
}
public class SingleLL
{
public LinkNode head;
public SingleLL()
{
// Set head value
this.head = null;
}
// Add new node at the end of linked list
public void insert(int value)
{
// Create node
var node = new LinkNode(value);
if (this.head == null)
{
this.head = node;
}
else
{
var temp = this.head;
// Find last node
while (temp.next != null)
{
// Visit to next node
temp = temp.next;
}
// Add node at last position
temp.next = node;
}
}
// Display all Linked List elements
public void display()
{
if (this.head != null)
{
var temp = this.head;
while (temp != null)
{
// Display node value
Console.Write(" " + temp.data);
// Visit to next node
temp = temp.next;
}
}
else
{
Console.WriteLine("Empty Linked list");
}
}
public void sortedAdd(LinkNode element)
{
if (this.head == null)
{
this.head = element;
}
else if (this.head.data >= element.data)
{
element.next = this.head;
this.head = element;
}
else
{
var temp = this.head;
// Finding location of inserting node
while (temp.next != null &&
temp.next.data < element.data)
{
// Visit to next node
temp = temp.next;
}
// Add node
element.next = temp.next;
temp.next = element;
}
}
public void segregateNode(SingleLL odd,
SingleLL even)
{
LinkNode node = null;
// Iterating the linked list node
while (this.head != null)
{
node = this.head;
// Visit to next node
this.head = node.next;
// Set null to next node
node.next = null;
if (node.data % 2 == 0)
{
// When node value is Even
even.sortedAdd(node);
}
else
{
// When node value is Odd
odd.sortedAdd(node);
}
}
}
public static void Main(String[] args)
{
// Create linked lists
var sll = new SingleLL();
var odd = new SingleLL();
var even = new SingleLL();
// 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);
Console.WriteLine("Initial Element");
// Display all node
sll.display();
sll.segregateNode(odd, even);
Console.WriteLine("\nEven Element");
// Display all even node
even.display();
Console.WriteLine("\nOdd Element");
// Display all odd node
odd.display();
}
}
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