2017-03-18 135 views
0

以下代碼是應該添加和刪除整數值,但功能不按預期工作的隊列。只有前兩個值被添加,remove函數顯示空指針異常。 此外,迭代器類不遍歷整數值。它會導致無限循環。原因是什麼?鏈接列表添加和刪除不按預期工作,Java

謝謝。

+0

。在你的設計中一大缺陷:不知道前面的元素,你正在使用'回來= back.next'這則正好相反,打破結構無法刪除從最終的元素。您需要將每個節點的下一個和後一個都存儲起來,或者每次都要遍歷它。 – Jack

+0

是否有任何理由不使用[LinkedList](https://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html)?它在JRE6及更高版本中可用 –

回答

1

add方法這兩行似乎是創建一個循環:

front.next = previousNode; 
previousNode.next = front; 

週期這裏導致在迭代中的無限循環。

我認爲你需要的只是將前一個節點的下一個節點設置到新節點。

previousNode.next = front; 

另外,remove方法的這一部分似乎並不正確:

E n = back.element; 
back = back.next; 
if (back == null) 
    front = null; 
else 
    back.next = null; 

這裏的問題是,你設置back.next爲null每一次,它讓你失去的休息隊列。

爲了解決這個問題,你只需要刪除其他部分,以便保持舊的下一個。

E n = back.element; 
back = back.next; 
if (back == null) 
    front = null;