这个链表代码有点麻烦。我想遍历列表并在列表的末尾添加一个新节点,但是,我的while循环在第三次添加时无限运行。
struct node *w = calloc(...);
w->next = NULL;
struct node **r = &(list)->nodes;
if(r == NULL){
*r = w;
}else{
while(*r != NULL){
if((*r)->next == NULL){
(*r)->next = w;
break;
}
(*r) = (*r)->next;
}
}
前两次添加设置了节点(我用print语句进行检查(,然而,在第三次添加时,代码进入了一个无限循环。知道我哪里错了吗?
感谢
if(r == NULL){
*r = w;
首先,这是完全错误的。如果r
为null,则*r
为未定义行为。
很难说它应该是什么,因为我们无法看到您的所有代码,但在最初的猜测中,我怀疑您应该比较*r
而不是r
。但这只是一个猜测,无论它可能受过多少教育