2012-01-22 38 views
0

我试图写一个递归链表的反向函数,我的头在旋转。 有人可以告诉我如何修补功能?我怎样才能得到这个递归链表逆向工作?

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

[Linked List recursive reverse]的可能重复(http://stackoverflow.com/questions/2434411/linked-list-recursive-reverse) – dasblinkenlight

回答

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

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

这是一个常见的问题,大多数编译器应该已经发出警告。如果您未打开警告(如果您使用gcc或clang,请添加-Wall标志),请这样做。

+0

纠正了这个缺陷。但是,如何解决这个递归? – cppcoder

+0

@cppcoder:递归有什么问题? – kennytm

+0

它不起作用。它无限递归。 – cppcoder

1

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

if (NULL == successor) 
    return prev; 

,现在您忘了写两个“=”,编译器,因为你不能分配NULL值抛出一个错误。

相关问题