Java 在双链接列表中的RemoveAll方法?
如何为双链接列表实现RemoveAll方法?我有一个正常的删除方法:Java 在双链接列表中的RemoveAll方法?,java,removeall,Java,Removeall,如何为双链接列表实现RemoveAll方法?我有一个正常的删除方法: public boolean remove(String s){ //lists is empty if(head==null){ return false; } //list has 1 element and we want to remove it if(head.getData().equals(s) && head==tail){
public boolean remove(String s){
//lists is empty
if(head==null){
return false;
}
//list has 1 element and we want to remove it
if(head.getData().equals(s) && head==tail){
head = null;
tail = null;
return true;
}
//s is at the front of the list
if(head.getData().equals(s)){
head = head.getNext();
head.setPrev(null);
return true;
}
MyDoublyNode currentNode = head;
while(currentNode.getNext()!=null &&
!currentNode.getNext().getData().equals(s)){
currentNode = currentNode.getNext();
}
//we never found it
if(currentNode.getNext()==null){
return false;
}
//trying to remove the tail
if(currentNode.getNext().getData().equals(s) &&
currentNode.getNext() == tail){
currentNode.setNext(null);
tail = currentNode;
return true;
}
//we've found what we're trying to remove, remove it
if(currentNode.getNext().getData().equals(s)){
currentNode.getNext().getNext().setPrev(currentNode);
currentNode.setNext(currentNode.getNext().getNext());
return true;
}
//never found s, return false
return false;
}
我想一下子切出一个值,而不必使用调用remove more的语句。我还不完全熟悉节点和双链接列表。尝试使用clear();或.reset();尽量使用clear();或.reset();