通过递归找到链表中的偶数和奇数


祝大家新年快乐!:)

我可以在一年的第一天做更好的事情,但我正试图实现链表和递归在一起。

我只是想如何实现写一个函数来计算递归链表中的偶数。

void List:: findingEvens(Node* n, Node*& newHead){
    if(n  == NULL)
        return;
    else
        if(n-> data % 2 != 0)
            findingEvens(n-> next);
    else{
        if(!newHead){
            newHead = n;
        }
        else{
             Node* temp =head;
             for(;temp->next;temp=temp->next){
                temp = temp -> next;
              }
             temp-> next = n;
             findingEvents(n-> next);
        }
    }  
}
问题是,在我的h类中,我添加了以下内容,因为它应该是
void findingEvens(Node* n);

然而,这使我的错误,说错误:' Node '没有被声明实际上,在h类中定义了这个函数之后,我有一个Node结构体。

递归函数的实现是否错误?任何帮助都会很感激,新年快乐:)

void List:: findingEvens(Node* n, Node*& newHead){
    if(n  == NULL)
        return;
    else
        if(n-> data % 2 != 0)
            findingEvens(n-> next, newHead);
    else{
        // Push even node onto newHead list
        newNode = new Node;
        newNode->data = n->data;
        newNode->next = newHead;
        newHead = newNode;
        findingEvens(n-> next, newHead);
    }
}

需要在递归调用中传递newHead

不能将n直接赋值给newHead,因为这样newHead列表将具有原始列表中的所有链接。您需要创建新节点并复制数据。

以上代码以与原始列表相反的顺序构建结果列表,例如,如果从1, 2, 3, 5, 6, 8, 9开始,结果将是8, 6, 2。当列表完成后,您可以反转列表

相关内容

  • 没有找到相关文章

最新更新