I have seen this in some book/ tutorial.
When you pass in the head pointer (of linked list) into a function, you need to pass it as a double pointer.
For eg: // This is to reverse a linked list where head points to first node.
void nReverse(digit **head)
{
    digit *prev=NULL;
    digit *curr=*head;
    digit *next;
    while(curr!=NULL)
    {
        next=curr->next;
        curr->next=prev;
        prev=curr;
        curr=next;
    }
    *head=prev;
    return;
}
This works fine.
It also works when I use single pointer like,
void nReverse(digit *head)
{
    digit *prev=NULL;
    digit *curr=head;
    digit *next;
    while(curr!=NULL)
    {
        next=curr->next;
        curr->next=prev;
        prev=curr;
        curr=next;
    }
    head=prev;
    return;
}
I tried printing the list by using the head pointer. Both the functions work fine.
Am I missing something ?
Thanks,
 
     
     
     
     
     
    