Мне нужно использовать рекурсию для подсчета узлов в связанном списке.
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 ();Или заголовок списка всегда должен передаваться при использовании рекурсии? </p>