我有一个链表,其中包含一个方法来遍历列表并打印出链接列表中的结构值。链接列表中发生无限循环
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++;
}
}
当您创建/插入到列表中,并且最后一项没有将其下一个指针设置为空时,您可能会搞砸了某些东西。 – Mat 2013-05-02 06:58:41
你可以发布你的LinkListNode结构吗? – Geek 2013-05-02 06:59:06
方面注意:你的计数是错误的第一个片段。即使在具有空头的列表中,它也会被评估为1。希望它的价值不重要。 – WhozCraig 2013-05-02 07:09:02