我需要使用递归来计算链表中的节点。关于函数参数和递归的类和默认值的C++问题
unsigned CLL::CountNodes(CNode* val)
{
if(!val)
return 0;
else
return 1 + CountNodes(val->next);
}
所以,当我要算节点的链表,从说,另一个函数,我去:
int main()
{
CLL list();
cout << list.CountNodes(list.head);
}
这似乎有些冒险,但因为该类应该能够在没有我传递给列表头的头的点的情况下算清单。这似乎是一个for循环直截了当;然而,与递归,我试过:
unsigned CLL::CountNodes(CNode* val = head)
{
if(!val)
return 0;
else
return 1 + CountNodes(val->next);
}
但这不起作用,因为头不是静态的。然后让头脑静止是一个问题,因为我必须在课堂外宣布它。
反正有解决问题吗? 例如cout < < list.CountNodes(); 或者当使用递归时,是否必须始终传递列表的头部?
谢谢你的提问,欢迎堆栈溢出! – 2011-09-28 03:18:39