为什么在使用递归反转链表时发生无限循环

时间:2016-02-08 20:38:14

标签: pointers recursion data-structures linked-list heap

我是数据结构的初学者。让我们假设我有一个包含5个元素的链表。我正在编写以下代码来使用递归反转链表:

void reverse (node* p)
{
    if (p->next == NULL)
    {
        head = p;
        return;
    }
    reverse (p->next);
    node* q = p->next;
    q->next = p;
    p->next = NULL;
}

在上面的代码中,头节点最初作为参数传递。这段代码运行良好;但问题是我们为什么要使用该行?

p->next = NULL;

如果我没有添加该行,它将变为无限循环。但即使没有添加该行,也会在下一个堆栈展开中为p-> next分配前一个节点的地址。那么,如果没有添加该行,为什么会导致无限循环?

0 个答案:

没有答案