Rearrange a linked list Java
- Get link
- X
- Other Apps
PROGRAM TO REARRANGE A LINKED LIST SUCH THAT ALL EVEN AND ODD POSITIONED NODES ARE TOGETHER
class
MAIN
{
// Linked List Node
static
class
Node
{
int
data;
Node next;
}
// A utility function to create a new node
static
Node newNode(
int
key)
{
Node temp =
new
Node();
temp.data = key;
temp.next =
null
;
return
temp;
}
// Rearranges given linked list
// such that all even positioned
// nodes are before odd positioned.
// Returns new head of linked List.
static
Node rearrangeEvenOdd(Node head)
{
// Corner case
if
(head ==
null
)
return
null
;
// Initialize first nodes of even and
// odd lists
Node odd = head;
Node even = head.next;
// Remember the first node of even list so
// that we can connect the even list at the
// end of odd list.
Node evenFirst = even;
while
(
1
==
1
)
{
// If there are no more nodes,
// then connect first node of even
// list to the last node of odd list
if
(odd ==
null
|| even ==
null
||
(even.next) ==
null
)
{
odd.next = evenFirst;
break
;
}
// Connecting odd nodes
odd.next = even.next;
odd = even.next;
// If there are NO more even nodes
// after current odd.
if
(odd.next ==
null
)
{
even.next =
null
;
odd.next = evenFirst;
break
;
}
// Connecting even nodes
even.next = odd.next;
even = odd.next;
}
return
head;
}
// A utility function to print a linked list
static
void
printlist(Node node)
{
while
(node !=
null
)
{
System.out.print(node.data +
"->"
);
node = node.next;
}
System.out.println(
"NULL"
) ;
}
// Driver code
public
static
void
main(String[] args)
{
Node head = newNode(
1
);
head.next = newNode(
2
);
head.next.next = newNode(
3
);
head.next.next.next = newNode(
4
);
head.next.next.next.next = newNode(
5
);
System.out.println(
"Given Linked List"
);
printlist(head);
head = rearrangeEvenOdd(head);
System.out.println(
"Modified Linked List"
);
printlist(head);
}
}
OUTPUT
Given Linked List 1->2->3->4->5->NULL Modified Linked List 1->3->5->2->4->NULL
- Get link
- X
- Other Apps
Comments
Post a Comment