函数以递归逆转链接的列表

Function to reverse a linked list recursively

本文关键字:列表 链接 逆转 递归 函数      更新时间:2023-10-16

我试图编写此功能以逆转单链接列表,而我在这里找不到问题。

void reverse(node *&c, node *&p){
    if(c = NULL){
        c = p;
        return;
    }
    node *n = c->next;
    c->next = p;
    p = c;
    c = n;
    reverse(c, p);
}

c =电流节点,p =先前的节点,n =下一个节点。

我在Internet上找到了具有返回类型的'node*'的多个解决方案,还有其他一些解决方案,但我想找到我的实现问题

您的条件if(c = NULL)中有一个分配。这是有效的c/c ,并将null分配给c。然后,分配(NULL)的结果被用作您的IF-Statement中的条件,然后将始终评估false。

用平等的比较替换分配(==

在您的条件下使用副作用是不良的实践,应避免。这可能很难找到错误。即使您想要的是您想要的,也应该在IF语句之前使用它,然后检查变量。
其他不良副作用可能是诸如if (someExpression && (a++ == 5))之类的东西,其中可能会根据编译器设置增加或不会增加。

在您的if语句中,您将null分配给c。用" =="替换" ="。我喜欢更改ordwrite,例如(null ==变量),因为如果我错过一个" =",我会收到一个错误。