簡體   English   中英

未打印鏈表的最后一個節點值

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

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