This is a code for inverting a linked link.But I just understand a little.Please explain it clearly help me.
Code:
 node *inverting (list &first, list &last) 
                {
                    node *tmp;
                    if (first != NULL)
                         {
                            if ((first)->next != NULL)
                              {
 tmp= inverting (first->next,last);
                                  (last)->next = first;
                                  last = first;
                                  (last)->next = NULL;
                                 first = tmp;
                               }
                            return first;
                          } 
                      else
                           return NULL;
                  }