我有一個鏈表,其中包含一個方法來遍歷列表並打印出鏈接列表中的結構值。鏈接列表中發生無限循環
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