2015-11-22 40 views
0
時跳過空虛節點

我有一個雙向鏈表,它看起來像:如何遍歷雙向鏈表

null 1 2 3 null

當我遍歷使用下面的代碼中,輸出打印完全是一個迭代器列表上面寫的是什麼。

  Iterator<Integer> it = lst.iterator(); // tests iterator method 
      while (it.hasNext()) { 
       Integer val = it.next(); 

       System.out.println(val); 
      } 

不過,我想跳過空節點,因爲我遍歷列表,以便只打印:

1 2 3

我不能讓我的代碼來做到這一點。這是我迄今爲止提出的。

  Iterator<Integer> it = lst.iterator(); // tests iterator method 
      while (it.hasNext()) { 
       Integer val = it.next(); 
       if (val == null) 
       it.next() 

       System.out.println(val); 
      } 

問題是我得到一個NoSuchElementException錯誤,但我找不出如何解決它。我的猜測是我得到這個錯誤,因爲當我到達第二個空虛擬節點時,我嘗試跳過它,但沒有其他節點可以跳轉到。

我的問題是,我怎樣才能改變我的代碼,以便它打印每個元素在雙向鏈表,同時跳過兩個空的虛擬節點?

+0

值的測試,以避免在打印指示,而不是「跳過」它。 – laune

+0

嘗試使用'如果(VAL!= NULL)的System.out.println(VAL);' –

回答

1

所有您需要做的是結合println的使用測試:

while (it.hasNext()) { 
    Integer val = it.next(); 
    if (val != null){ 
     System.out.println(val); 
    } 
} 

如果你在循環中的額外的未來,你跳過一個hasNext,這就是爲什麼你遇到異常。

+0

這定了!謝謝!也謝謝你解釋錯誤的原因。這絕對有助於清除它。 –