Reverse a Linked List in groups of given size

Reverse a Linked List in groups of given size.

Given a linked list, write a function to reverse every k nodes .

Example:
If a linked list is given as 1->2->3->4->5->6->7->8->NULL and k = 3 then,
Output will be 3->2->1->6->5->4->8->7->NULL.

Algorithm:
  • It a variant of {@link ReorderList}, in that k was 2
  • Set some variable before starting iteration process
  • newHead = null, current = node, next, prev, prevPrev = node and bachStartNode
  • Iterate till node ! = null
    • Set prev = null, counter = 0 and bachStartNode = node
    • Iterate till node != null and counter < k
      • next = node.next
      • node.next = prev
      • prev = node
      • node = next
    • if prevPrev != null
    • prevPrev.next = prev
    • PrevPrev = bachStartNode

Latest Source Code:
Github: KReverseList.java


Output:

1 2 3 4 5 6 7 8 
2 1 4 3 6 5 8 7 

1 2 3 4 5 6 7 8 
3 2 1 6 5 4 8 7 

1 2 3 4 5 6 7 8 
4 3 2 1 8 7 6 5 
Author: Hrishikesh Mishra