Node* temp=NULL;
Node* start=NULL;
void recursive(Node* root){
    if(root->next!=NULL)
    {
        recursive(root->next);
        root->next->next=root;
        if(root==start)root->next=NULL;
    }
    else temp=root;
}

struct Node* reverseList(struct Node *root)
{
    if(root==NULL)return NULL;
    if(root->next==NULL)return root;
    start=root;
    recursive(root);
    return temp;
}