我从以下代码中遇到段错误。我认为这与我的函数调用有关?

问题描述 投票:0回答:1

此代码应该使用包装函数来计数所有节点。这是一个循环链表,所以我用temp指向Rear-> next,然后用temp遍历直到temp == rear。

int count_all(node *rear) {
    int count = 0;
    if (!rear)
        return 0;
    if (rear == rear->next)
        return 1;
    return recursive_count_all(rear,count);
}

int recursive_count_all(node *rear,int &count)  {
    if (!rear)
        return 0;

    node * temp = rear->next; 

    if (rear == temp)
        return 1;
    else
        temp = temp->next;

    return recursive_count_all(rear->next, ++count);
}
c++ recursion segmentation-fault wrapper
1个回答
0
投票

您最终有无限递归,因为您的有条件回报

if (rear == temp)
    return 1;

正在将您的上一个节点与下一个节点进行比较,因此不会返回#nodes>1。一旦到达开始的第一个节点,就应该中断有条件的递归。

© www.soinside.com 2019 - 2024. All rights reserved.