0

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

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++;
        }
}
4

3 回答 3

4

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

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

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

于 2013-05-02T07:07:02.930 回答
2

你检查过你的 LinkedList 结构是否是循环的吗?它可能发生在循环链表的情况下

于 2013-05-02T07:01:04.690 回答
1

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

于 2013-05-02T07:06:54.467 回答