在C中遍历链表,会陷入循环



我一直陷入循环,但我不知道如何修复它。我们必须遍历这个列表。它打印了,但没有进入下一个测试函数。我认为代码没有识别列表的结尾,也没有退出while循环。

void traverse_int(struct s_node* head)
{
    struct s_node* next_node;
    int* x;
    next_node=head;
    while(next_node != NULL)
    {
        if (next_node->elem == NULL)
        {
            my_str("NULL");
        }
        else
        {
            x=(int*) next_node->elem;
            my_int(*x);
        }
        my_str(" ");
        next_node=next_node->next;
    }
    my_char('n');
}

这是我使用的测试用例:

    a = 17;
    b = 10;
    c = 16;
    d = 95;
    add_elem(&a, &head);
    add_elem(&b, &head);
    add_elem(&c, &head);=
    add_elem(&d, &head);
    traverse_int(head);              my_str("nshould print 95 16 10 17n");

它不输出my_str,它只是被捕获并输出:95 16 10 17

它应该打印:

95 16 10 17

应该打印95 16 10 17

请帮助! !

我老了,但是像你的堆栈这样的链表,我看到你需要先给链表的尾部分配一个NULL值,然后每次添加一个节点,然后向新的尾部添加一个NULL。您没有为结束节点分配NULL值,因此您有一个无限循环。

相关内容

  • 没有找到相关文章

最新更新