反向链表 - 递归

时间:2013-03-15 15:30:36

标签: recursion singly-linked-list

很抱歉,如果这是一个非常基本的问题,我只是想学习递归。

以下代码可以反转链接列表。

我理解逻辑直到第3行,但是当第4行被称为(n.next=prev)时我很困惑,因为在执行该行之前再次调用该函数。

有人能告诉我这次递归的流程吗?

 void reverse(node n, node prev) {
     if (n == null) { newroot = prev; return; }
     reverse(n.next, n);
     n.next = prev;
    }

1 个答案:

答案 0 :(得分:2)

只要 n 点击null并反转函数return,它就会从那里回溯到它的调用函数一直到它的第一个调用函数。

更新:有关更完整的说明,请参阅以下评论。