struct Letter {
char let;
Letter *next;
};
請看下面稱爲addLETTERS()的函數。鏈接列表離開遞歸函數後丟失節點
int main() {
Letter *Top = 0;
Letter *head = 0;
char letters = 'a';
head = new Letter;
Top = new Letter;
MakeNull(head);
MakeNull(Top);
addLETTERS(Top, head,letters);
return 0;
}
void MakeNull(Letter *newNode){
newNode = new Letter;
newNode->let = 0;
newNode->next = 0;
}
對於一些奇怪的原因離開這個功能時,我的鏈表損失其所有創建的節點?使用GDB我可以清楚地看到該函數正在工作,並將整個字母表添加到列表中。有人可以運行這個簡單的代碼,並告訴我爲什麼?
struct Letter *addLETTERS(Letter *Top, Letter *head, char& letters) {
if(letters != 'z' + 1){
Top = new Letter;
Top->let = letters++;
Top->next = head;
head = Top;
addLETTERS(Top,head,letters);
}
else {
Top->let = '\0';
Top->next = head;
head = Top;
}
return Top;
}
@ codeulike:爲什麼retag?這不是C代碼。 – 2010-10-01 15:31:34
對不起,當我標記它沒有語言標籤,所以我有一個猜測:S – codeulike 2010-10-01 16:21:01