//Recursive method to reverse

Node* reverse(Node* cur, Node* pre){
  
  if(cur->next == NULL){//end of the list
    cur->next = pre;
    return cur;
  }
  else{
    Node* temp = reverse(cur->next, cur); 
    cur->next = pre;
    return temp;
  }
}

reverse(head, NULL);

//Iterative method
Node* reverse(Node* cur){
  Node* pre=NULL, temp=NULL;
  
  while(cur){
    temp = cur->next;
    cur->next = pre;
    pre = cur;
    cur = temp;
  }
  return pre;
}