C语言 双 while 循环在链表上导致无限循环


Subscription *current_sub;
current_sub = sub_user->subscriptions;
while (current_sub != NULL){
    Event *sub_events;
    sub_events = current_sub->calendar->events;
    while (sub_events != NULL){
        add_event(ordered_events, od, sub_events->description, sub_events->time);
        printf("added! n");
        if(sub_events ->next != NULL){
        sub_events = sub_events->next;
        }
    }
    if (current_sub->next != NULL) {
        current_sub = current_sub->next;
    }
}

所以我的循环出于某种原因无限循环,我不知道为什么。两者都检查 null,我的链表都应该在某个时候终止。我应该注意的与双 while 循环检查空指针有关吗?

编辑:没关系无限循环是固定的。非常感谢!

您正在检查此条件

while (current_sub != NULL)

然后使用if条件,确保如果只有current_sub->next != NULL则递增current_sub

if (current_sub->next != NULL)

因此,当next指向NULL时,current_sub永远不会递增到 next

内部while (sub_events != NULL)if(sub_events ->next != NULL)也是如此

if(sub_events ->next != NULL){
    sub_events = sub_events->next;
}

如果sub_events ->next为 NULL,则sub_events不会更改,因此下一次迭代将无限使用相同的值。与

if (current_sub->next != NULL) {
    current_sub = current_sub->next;
}
条件没有

意义;只需删除它们并无条件地完成作业。

相关内容

  • 没有找到相关文章

最新更新