链表中出现无限循环

时间:2013-05-02 06:55:13

标签: c loops data-structures linked-list

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

void testLinkedList(LinkedList* list)
    {
        int count = 1;
        LinkedListNode* current = list->head;
        while (current != NULL)
            {
                printf("%d: Label is is %d\n", 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++;
        }
}

3 个答案:

答案 0 :(得分:4)

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

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

BTW:其他来源可以在this相关主题中找到。

答案 1 :(得分:2)

你检查过你的LinkedList结构是否是循环的?在圆形链表

的情况下可能会发生这种情况

答案 2 :(得分:1)

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