簡體   English   中英

鏈表中出現無限循環

[英]Infinite loop occuring in 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++;
        }
}

創建新的列表節點時,您忘記將下一個指針設置為NULL:

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

順便說一句:其余資源可在相關主題中找到。

您是否檢查過LinkedList結構是否為圓形? 在循環鏈表的情況下可能會發生

此方法是正確的。 檢查每個節點是否正確連接到下一個節點,以及最后一個節點連接到NULL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM