[英]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.