[英]last node value of a linked list is not being printed
我試圖遍歷一個鏈表並使用node顯示每個節點的值。我在這里使用while循環。但是問題是鏈表的最后一個元素沒有被打印,我不得不單獨打印最后一個元素。
int print(){
printf("\ncurrent list is \n");
struct Node* showList;
showList=head;
while(showList->next !=NULL){
printf("%d ",showList->data);
showList=showList->next;
}
printf("%d",showList->data); // it prints the last element
printf("\n");
}
您可以將條件更改為:
while(showList != NULL)
然后你while
不會跳過最后一個節點。 它正在跳過當前狀態下的最后一個節點,因為很顯然,當您在最后一個節點時, showList->next == NULL
,即使該節點包含值,循環也不會執行。
編輯:請確保您在更改后刪除了此行,否則會遇到問題:
printf("%d",showList->data); // it prints the last element
或者,您可以使用for
循環:
for(showList = head; showList != NULL; showList = showList->next)
printf("%d ",showList->data);
大概,列表中的最后一個節點next
設置為NULL
。 這是鏈表實現的典型方法。
如果在您的實現中是這種情況,則while
循環的條件在最后一個節點上失敗。 換句話說,當showList
是最后一個節點時, (showList->next !=NULL)
計算結果為false。
為確保最后一個節點被打印,請更改要測試的條件。 例如,您可以簡單地測試showList
是否為非null。
您可以使用while(showlist!= NULL)根據您的情況,它不會進入最后一個元素的while循環
showList->next !=NULL
此條件適用for loop
在while循環中,您應該使用showList!=NULL
因為在while循環中,showList在退出while循環后指向NULL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.