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