Thursday, April 12, 2012

Reversing grp of K Nodes in SLL



 public static LinkedList reverseK(LinkedList head, int k){
  LinkedList prev = null,next=null;
  LinkedList curr = head;
  int count = 0;
  while (curr !=null && count < k) {
   next = curr.next;
   curr.next = prev;
   prev = curr;
   curr = next;
   count++;
  }

  if(curr!=null)
      head.next = reverseK(curr,k);
  return prev;
  }
 
 public static LinkedList reverseK_Iter(LinkedList p, int k){
  LinkedList headNode = null,head = null;
  LinkedList curr = p;
  int count;
  while(curr != null ) {
   LinkedList prev = null,next=null;
   LinkedList currHead = curr;
   count = 0;
   while(curr!=null && count < k) {
    next = curr.next;
    curr.next = prev;
    prev=curr;
    curr = next;
    count++;
   }
   if(headNode == null)
    headNode = prev;
   else 
      head.next = prev;
   head = currHead;
   //LinkedList.Display(headNode);
  }
  return headNode;
  }

No comments:

Post a Comment