如何让这个递归链表反向工作?

时间:2012-01-22 18:31:40

标签: c++ recursion linked-list

我试着写一个递归链表反向函数,我的头在旋转。 有人可以告诉我,我该如何修补这个功能?

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;
}

2 个答案:

答案 0 :(得分:2)

if(successor = NULL) // <---
    return prev;

这里应该是==。 (=是赋值,==是相等的比较。)

这是一个常见问题,大多数编制者应该对此发出警告。如果您没有打开警告(如果您使用gcc或clang,请添加-Wall标志),请执行此操作。

答案 1 :(得分:1)

您还应该首先尝试编写常量以避免此类问题。 例如:如果你写

if ( NULL == successor )
   return prev;

并且您现在忘记写两个“=”,编译器会抛出错误,因为您无法为NULL分配值。