Skip to main content

Segregate even and odd nodes in sorted order in typescript

Ts program for Segregate even and odd nodes in sorted order. Here more information.

// TypeScript program for
// Segregate even and odd nodes in ascending order

// Linked list node
class LinkNode
{
	public data: number;
	public next: LinkNode;
	constructor(data: number)
	{
		this.data = data;
		this.next = null;
	}
}
class SingleLL
{
	public head: LinkNode;
	constructor()
	{
		// Set head value
		this.head = null;
	}
	// Add new node at the end of linked list
	public insert(value: number)
	{
		// 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 display()
	{
		if (this.head != null)
		{
			var temp = this.head;
			while (temp != null)
			{
				// Display node value
				console.log("  " + temp.data);
				// Visit to next node
				temp = temp.next;
			}
		}
		else
		{
			console.log("Empty Linked list");
		}
	}
	public sortedAdd(element: LinkNode)
	{
		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 segregateNode(odd: SingleLL, even: SingleLL)
	{
		var node: LinkNode = 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 main(args: string[])
	{
		// 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.log("Initial Element");
		// Display all node
		sll.display();
		sll.segregateNode(odd, even);
		console.log("\nEven Element");
		// Display all even node
		even.display();
		console.log("\nOdd Element");
		// Display all odd node
		odd.display();
	}
}
SingleLL.main([]);
/*
 file : code.ts
 tsc --target es6 code.ts
 node code.js
 */

Output

Initial Element
  4
  3
  5
  2
  11
  1
  6

Even Element
  2
  4
  6

Odd Element
  1
  3
  5
  11




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