我有一个链表,其中包含遍历列表的方法,并在链表中打印出结构的值。
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++;
}
}
答案 0 :(得分:4)
在创建新的列表节点时,您忘记将下一个指针设置为NULL:
LinkedListNode* newNode = (LinkedListNode*)malloc(sizeof(LinkedListNode));
newNode->data = newData;
newnode->next = NULL;
BTW:其他来源可以在this相关主题中找到。
答案 1 :(得分:2)
你检查过你的LinkedList结构是否是循环的?在圆形链表
的情况下可能会发生这种情况答案 2 :(得分:1)
这种方法是正确的。检查每个节点是否正确连接到下一个节点,以及最后一个节点是否连接到NULL。