我需要使用遞歸來計算鏈表中的節點。關於函數參數和遞歸的類和默認值的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