title: Reverse alternate elements and append to end of the list
body: <p>Given a linked list as a->x->b->y->c->z , we need to reverse alternate element and append to end of list. That is , output it as a->b->c->z->y->x.</p>
  
  <p>I have an O(n) solution but it takes extra memory , we take 2 lists and fill it with alternate elements respectively , so the two lists are a b c and x y z and then we will reverse the second list and append it to the tail of first so that it becomes a b c z y x .</p>
  
  <p>My question is can we do it in place ? Or is there any other algorithm for the same ?</p>