我知道这个问题已经在论坛上发布了,但是我有一个小问题我试图解决但我没有成功
当我尝试此代码甚至代码将其发布到stackoverflow其他线程时,我总是会遇到违规访问错误我尝试了此代码
void reverse(node **headRef)
{
node *current = *headRef, *next,*result=NULL;
while(current)
{
next = current->next;
current->next = result;
result =current;
current = next;
}
*headRef = result;
}
在 eclipse cpp、Visual Studio 和代码块中,它总是以违规访问而告终,当我尝试逐步调试员工时,我发现我奇怪地认为光标进入了 while 循环,即使当前为 NULL,甚至当我尝试用 current->next 替换 current->next 光标仍然进入循环,尽管 current->next 已经是 NULL
while(current->next)
{
next = current->next;
current->next = result;
result =current;
current = next;
}
我试图重复使用相同的人员以避免循环但是问题仍然存在
void recursiveReverse(node **headRef) {
node *first = *headRef;
node *rest = first->next;
if(rest ==NULL) return;
recursiveReverse(&rest);
first->next->next = first;
first->next = NULL;
*headRef = rest;
}
这是视觉工作室的错误: