问题已经讨论过here
假设我们不是先使用最后两个指针而只是写
if(*head_ref->next==NULL)
{
p=*head->ref;
return;
}
recursive(&head_ref->next);
p->next-next=p;
p->next=NULL;
这不起作用,我知道它不应该,但不能理解为什么。
首先,如果我们通过*head_ref
会有什么问题吗?它实际上确实改变了头部,但是当我们处于递归时,它是否会引起任何问题?另外我们应该在递归调用中作为参数传递什么?
正确的代码如下所示我只是尝试以不同的方式实现它,我知道它错了
struct Node *head;// Declared Global
void Reverse(struct Node *p)
{
if(p->next==NULL)
{
head=p;
return;
}
Reverse(p->next);
p->next->next=p;
p->next=NULL:
}