2016-06-28 56 views
0

我正在處理雙鏈表,並且我必須創建的方法之一是remove方法,它從列表中刪除targetData的所有實例,並且必須通過在列表中執行單個遍歷來刪除元素。然而,我的方法不刪除所有的實例,我無法弄清楚,爲什麼 這是我的方法Double LinkedList和刪除

+0

我相信,這是一個課外練習? (否則,你應該只是使用一個容器類......)那麼,雙鏈表的一個非常方便的「技巧」是初始化列表,使其始終包含一個**「虛擬」**條目,該條目最初與自身相連。這個虛擬或錨點條目在遍歷期間總是被忽略,當然不能被刪除。這個買你的是「插入或移除節點的代碼總是相同的,因爲總是至少有一個節點(虛擬...)在列表中 –

回答

-1

使用遞歸:

removeNode(node); 
{ 
    if(node.next==null){ 
     node.pre=null; 
     node=null; 
    }else{ 
     removeNode(node.next); 
     node.next=null; 
     node.pre=null; 
     node=null; 
    } 
} 
+1

你可以解釋你的解決方案,而不只是轉儲一些代碼... – Robert

+0

我不允許使用遞歸@Dipak Prajapati – haylu

+0

@Robert這個代碼沒有什麼複雜的解釋。而haylu請提及問題中的所有條件,在我們提供給你解決方案後不要提及它。 –