【发布时间】:2013-01-01 08:30:32
【问题描述】:
祝大家新年快乐! :)
我可以在今年的第一天做得更好,但我正在尝试一起实现链表和递归。
我只是想如何编写一个函数,用递归计算链表中的偶数。
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' has not been declared 实际上我在 h 类中定义了这个函数之后有一个 Node 结构。
递归函数的实现有错吗? 任何帮助将不胜感激,再次新年快乐:)
【问题讨论】:
-
在最后一个
else子句中,它从不与n->data做任何事情。您需要保存找到的号码,然后在n->next上递归。 -
哦,是的,没错,但是我如何存储 n -> 数据,是创建新列表的方式吗?实际上我想做给定链表中的所有事情。
-
两种方法: 1)取第二个列表作为参数,将找到的数字添加到其中。 2)从基本情况返回一个空列表,偶数情况将找到的数字添加到递归调用返回的列表中并返回,奇数情况只是从递归调用返回列表。
-
嗨@Barmar,我对这段代码做了一些修改,你能评论一下吗?
标签: recursion linked-list