为什么链表的递归反向中的最后一个节点总是相同的

时间:2019-01-31 20:21:55

标签: c recursion

在给定的代码中,为什么在每个范围内都是相同的。我想它应该与first-> next相同。我创建了一个3元素的链表,并在反向函数中传递了头节点

void reverse(struct Node **head){
     struct Node* first = NULL,*rest=NULL;
     if(*head == NULL)return;
     first = *head;
     rest = first->next;
     printf("%x   %x\n",first,rest);

     if(rest == NULL)return;
     reverse(&rest);

     printf("%x   %x  %x   \n",first,first->next,rest);
     first->next->next = first;
     first->next = NULL;
     *head = rest;
}

6615c8   6615f8
6615f8   661608
661608   0


6615f8   661608  661608
6615c8   6615f8  661608

此处给出的输出仅是此函数的printf。并且此输出用于3个元素的链表

0 个答案:

没有答案