C语言 链表中的无限循环



我有一个链表,它包含一个遍历链表的方法,并在链表中打印出结构体的值。

void testLinkedList(LinkedList* list)
    {
        int count = 1;
        LinkedListNode* current = list->head;
        while (current != NULL)
            {
                printf("%d: Label is is %dn", count, current->data->label);
            current = current->next;
                count++;
            }
        }

我在循环中做错了什么吗?它应该在到达最后一个节点时结束,但只要我允许,它将继续循环并打印虚数字。

编辑:这是我的insertlast()函数,我用来发送到链表:

void insertLast(LinkedList* list, TinCan* newData)
    {
        int ii = 1;
    LinkedListNode* newNode = (LinkedListNode*)malloc(sizeof(LinkedListNode));
    newNode->data = newData;
    //check if queue empty
    if(list->head == NULL)
        {
        list->head = newNode;
        newNode->next=NULL;
        }
    else
        {
        LinkedListNode* current = list->head;
        while (current->next != NULL)
            {
            current = current->next;
            }
        current->next = newNode;
        printf("%d", ii);
        ii++;
        }
}

创建新列表节点时忘记将下一个指针设置为NULL:

LinkedListNode* newNode = (LinkedListNode*)malloc(sizeof(LinkedListNode));
    newNode->data = newData;
    newnode->next = NULL;

顺便说一句:其余的源代码可以在这个相关的主题中找到。

你检查过你的LinkedList结构是否是循环的吗?这可能发生在循环链接列表

的情况下

此方法正确。检查每个节点是否正确连接到下一个节点,以及最后一个节点是否连接到NULL。

相关内容

  • 没有找到相关文章

最新更新