2011-07-27 19 views
0

我的鏈接列表的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; 
} 

爲什麼這個功能僅在打印的最後一個元素類節點的參考?

+0

如果這是家庭作業,請爲此添加標籤。如果這不是作業,請使用'java.util.LinkedList'。 – TC1

回答

1

該函數看起來或多或少是正確的。但是,爲什麼你將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); 

這是檢查,如果你的鏈接都是正確的。

1

這是不可能的,但很可能你的列表實際上只包含一個元素;即創建列表的代碼被破壞。

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

最後,您對列表末尾的測試不正確。仔細考慮firstfirst.link指向什麼時候執行while測試。

相關問題