c++ - 递归反转没有全局变量的链表

标签 c++ linked-list

我想知道为什么传递第二个参数 Node** fhead 会导致段错误? Node 有一个 int 值和一个指向下一个 Node 的 next 指针。

这是我的代码:

void reverse(Node* head, Node** fhead) {
    if (!head->next)
    {
        fhead = &head;
        return;
    }

    reverse(head->next, fhead);
    head->next->next = head;
    head->next = 0;
}

int main() 
{
   Node a = {1, 0};
   Node b = {2, &a};
   Node c = {3, &b};

   Node** fhead;
   reverse(&c, fhead);
}

最佳答案

你在递归终止时有一点错误。您应该将 *fhead 设置为 head 而不是用 &head 分配它(这只会在本地更改 fhead功能):

if (!head->next)
{
    *fhead = head;
    return;
}

关于c++ - 递归反转没有全局变量的链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34227345/

相关文章:

c - 链表剪切导致内存泄漏

c++ - 全局新运算符调用语法

c++ - 确定调用 Excel UDF 的实际参数

c++ - move 构造函数是否必须调用 std::move()?

java - LinkedList(通用)中的删除方法有什么问题?

复杂度为O(1)的单链表删除一个元素的算法

java - 通用双向链表

c++ - 访问并调用 std::function 的变体

c++ - 通过访问函数使用重载的 operator[]

c - 没有双向链表