簡體   English   中英

為什么鏈表的顯示功能總是打印最后一個元素?

[英]Why my display function of linked list always printing the last element?

鏈表的我的dipslay功能如下: -

public void display()
{
    cur = first;

    if(isEmpty())
    {
        System.out.println("no elements in the list");
    }
    else
    {
        System.out.println("elements in the list are:");

        do {
            System.out.println(first.data);
            first = first.link;
        } while(first.link!=null);

        first=cur;
    }

其中currfirst是類節點的引用

public class node
{
      int data;
      Node link=null;
} 

為什么這個函數只打印最后一個元素?

該功能看起來或多或少是正確的。 但是,為什么要將cur設置為first然后再使用first來進行迭代? 只需使用cur的迭代,所以你不必重新設置first

檢查以確保正確地將節點添加到列表中。 因此,如果您認為列表中有3個元素,請在display()運行:

System.out.println(first.data);
System.out.println(first.link.data);
System.out.println(first.link.link.data);

這是為了檢查您的鏈接是否正確。

不可能肯定地說,但您的列表可能實際上只包含一個元素; 即創建列表的代碼被破壞。

我還應該指出, display方法應該使用局部變量來逐步執行元素。 如果您使用實例變量(例如, first ),您可能會有不同的方法相互干擾。

最后,您對列表末尾的測試不正確。 仔細考慮執行while測試時firstfirst.link

暫無
暫無

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

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