package com.interview.linklist;
/**
* http://www.geeksforgeeks.org/pairwise-swap-elements-of-a-given-linked-list/
* Test case
* odd or even number of k
* odd or even number of nodes in the list
*/
public class ReverseKNodes {
public Node reverse(Node head,int k){
if(head == null){
return null;
}
Node front = null;
Node middle = head;
Node end = null;
int i=0;
while(middle != null && i < k){
end = middle.next;
middle.next = front;
front = middle;
middle = end;
i++;
}
head.next = reverse(middle,k);
return front;
}
public static void main(String args[]){
LinkList ll = new LinkList();
Node head = null;
head = ll.addNode(1, head);
head = ll.addNode(2, head);
head = ll.addNode(3, head);
head = ll.addNode(4, head);
head = ll.addNode(5, head);
head = ll.addNode(6, head);
head = ll.addNode(7, head);
head = ll.addNode(8, head);
ReverseKNodes rn = new ReverseKNodes();
head = rn.reverse(head, 3);
ll.printList(head);
}
}