title: function to print linked list in reverse order
body: <p>I was searching on how can I print a reverse of linked list and I found this piece of code </p>
  
  <pre><code>/* Function to reverse the linked list */
  void printReverse(struct node* head)
  {
      // Base case  
      if (head == NULL)
         return;
  
      // print the list after head node
      printReverse(head-&gt;next);
  
      // After everything else is printed, print head
      printf("%d  ", head-&gt;data);
  }
  </code></pre>
  
  <p>The problem is that I do not understand the part where it reaches the last pointer which points to NULL and how it comes back one by one and prints the linked list in reverse order.</p>
  
  <p>Is the return statement what makes it go step by step back? Or something else? Please help because I do not understand.</p>