2016-06-28 58 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请提及问题中的所有条件,在我们提供给你解决方案后不要提及它。 –