【发布时间】:2010-10-01 03:38:14
【问题描述】:
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:为什么要重新标记?那不是 C 代码。
-
对不起,当我标记它时没有语言标签所以我猜了:S
标签: c++ recursion linked-list