c-是什么导致了这个链表节点添加代码的无限迭代



这个链表代码有点麻烦。我想遍历列表并在列表的末尾添加一个新节点,但是,我的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。但这只是一个猜测,无论它可能受过多少教育

最新更新