0% found this document useful (0 votes)
18 views2 pages

Segregate Even and Odd Numbers in LL

Uploaded by

suraj.k2022
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views2 pages

Segregate Even and Odd Numbers in LL

Uploaded by

suraj.k2022
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

import java.util.

*;

class Main {
Node head;

// Node class
class Node {
int data;
Node next;

Node(int d) {
data = d;
next = null;
}
}

// Function to segregate even and odd nodes


void segregateEvenOdd() {
Node evenStart = null;
Node evenEnd = null;
Node oddStart = null;
Node oddEnd = null;
Node currentNode = head;

while (currentNode != null) {


int element = currentNode.data;

if (element % 2 == 0) { // Even node


if (evenStart == null) {
evenStart = currentNode;
evenEnd = evenStart;
} else {
evenEnd.next = currentNode;
evenEnd = evenEnd.next;
}
} else { // Odd node
if (oddStart == null) {
oddStart = currentNode;
oddEnd = oddStart;
} else {
oddEnd.next = currentNode;
oddEnd = oddEnd.next;
}
}
currentNode = currentNode.next;
}

// If there are no odd or even nodes, return


if (oddStart == null || evenStart == null) {
return;
}

// Combine even and odd lists


evenEnd.next = oddStart;
oddEnd.next = null;
head = evenStart;
}

// Function to insert a new node at the end of the list


void push(int new_data) {
Node new_node = new Node(new_data);
if (head == null) {
head = new_node;
return;
}
Node temp = head;
while (temp.next != null) {
temp = temp.next;
}
temp.next = new_node;
}

// Function to print the linked list


void printList() {
Node temp = head;
while (temp != null) {
System.out.print(temp.data + " ");
temp = temp.next;
}
System.out.println();
}

// Main function
public static void main(String args[]) {
Main main = new Main();
Scanner sc = new Scanner(System.in);

System.out.println("Enter the number of elements:");


int n = sc.nextInt();

System.out.println("Enter the elements:");


for (int i = 0; i < n; i++) {
int m = sc.nextInt();
main.push(m);
}

main.segregateEvenOdd();
System.out.println("Linked list after segregation:");
main.printList();
}
}

You might also like