2012-05-10 81 views
0

我知道這是一個分鐘的代碼。我不明白爲什麼我的鏈表逆轉無效。 在下面的代碼中,有人能幫我修復我的逆向方法嗎?鏈表反向不工作....?

//Reverse a single linked list 
public Node reverse() 
{ 
    return reverse(root); 
} 
private Node reverse(Node node) 
{ 
     Node previous = null; 
     Node current = node; 
     Node forward; 

     while (current != null) 
    { 
      forward = current.next; 
      current.next = previous; 
      previous = current; 
      current = forward; 
     } 
    return previous; 
} 

任何對此的投入將是有益的

謝謝!

+0

有很多例子。你的谷歌? – DarthVader

+2

和什麼不工作?更具描述性的行爲 – DarthVader

+0

10 - > 20 - > 30是我的鏈表...反過來後,我只得到10 – user1141584

回答

0

我敢肯定這應該是

return root = reverse(root); 

(你的反向邏輯是正確的,但如果root在列表的老根仍然指向,你會最終有一個1元鏈接列表)。

0

假設功課...

編寫簡單的測試:0項,1項清單中,2項列表,10個項目清單列表。確保他們每個人都能工作 - 將縮小錯誤並學會編寫單元測試。

+0

感謝您的輸入。正在嘗試用於面試的練習。反向方法是Linkedlist類。我創建了LinkedList的一個對象。 (LinkedList l1 = new LinkedList();) – user1141584

+0

10 - > 20 - > 30是我的鏈表... ...反過來後,我只得到10 – user1141584

+1

所以認爲自己沒有通過以下反饋的採訪:錯過了測試開始,明確的測試提示沒有通過,仍然未能測試代碼。 (預期的評論是這樣的:「測試0,1項目確定,2 - 失敗......這是爲什麼......」)。 –

0

你確定你正在使用reverse()的返回值來做你的迭代而不是root嗎?