我试着写一个递归链表反向函数,我的头在旋转。 有人可以告诉我,我该如何修补这个功能?
node* recursiveReverse(node* h, node* prev)
{
node* current = h; //Point to current node
node* successor = h->next; //Points to next node
if(successor == NULL)
return prev;
successor->next = recursiveReverse(successor,current);
h->next = NULL;
return successor;
}
答案 0 :(得分:2)
if(successor = NULL) // <---
return prev;
这里应该是==
。 (=
是赋值,==
是相等的比较。)
这是一个常见问题,大多数编制者应该对此发出警告。如果您没有打开警告(如果您使用gcc或clang,请添加-Wall
标志),请执行此操作。
答案 1 :(得分:1)
您还应该首先尝试编写常量以避免此类问题。 例如:如果你写
if ( NULL == successor )
return prev;
并且您现在忘记写两个“=”,编译器会抛出错误,因为您无法为NULL分配值。