Recursive method for reversing singly linked list?
<p>I've seen this recursive program (in C language) in</p>

<p><a href="http://www.geeksforgeeks.org/write-a-function-to-reverse-the-nodes-of-a-linked-list/" rel="nofollow">http://www.geeksforgeeks.org/write-a-function-to-reverse-the-nodes-of-a-linked-list/</a> </p>

<p>for reversing Singly linked list. </p>

<pre><code>void recursiveReverse(struct node** head_ref){

struct node* first;
struct node* rest;

/* empty list */
if (*head_ref == NULL)
   return;   

/* suppose first = {1, 2, 3}, rest = {2, 3} */
first = *head_ref;  
rest  = first-&gt;next;

/* List has only one node */
if (rest == NULL)
   return;   

/* reverse the rest list and put the first element at the end */
recursiveReverse(&amp;rest);
first-&gt;next-&gt;next  = first;  

/* tricky step -- see the diagram */
first-&gt;next  = NULL;          

/* fix the head pointer */
*head_ref = rest;}
</code></pre>

<p>In this step in the program,</p>

<pre><code>/* reverse the rest list and put the first element at the end */
    recursiveReverse(&amp;rest);
    first-&gt;next-&gt;next  = first; 
</code></pre>

<p>Can I write " rest->next = first; " instead of " first->next->next = first; " ? </p>

<p>Or is there any significance of writing " first->next->next = first; " ?</p>