[英]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;
}
其中curr
和first
是類節點的引用
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
測試時first
和first.link
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.