从链表中删除一系列值
Removing a range of values from a linked list
我试图从链表中删除一个节点,如果它的值落在某个范围内(大于或等于低且小于或等于高)。此代码仅删除范围内找到的第一个值。
public void removeData(E low, E high) {
Node previousNode = root;
Node deleteNode = previousNode.getNext();
while (deleteNode != null) {
if (deleteNode.getValue().compareTo(low) >= 0 && deleteNode.getValue().compareTo(high) <= 0) {
previousNode.setNext(deleteNode.getNext());
}
previousNode = previousNode.getNext();
deleteNode = deleteNode.getNext();
}
}
在这段代码中你需要做的是:
public void removeData(E low, E high) {
Node previousNode = root;
Node deleteNode = previousNode.getNext();
while (deleteNode != null) {
if (deleteNode.getValue().compareTo(low) >= 0 && deleteNode.getValue().compareTo(high) <= 0) {
previousNode.setNext(deleteNode.getNext());
}else{
previousNode = previousNode.getNext();
}
deleteNode = deleteNode.getNext();
}
}
因为如果一个节点被删除,前一个节点不需要递增,只需要 deleteNode 就可以。并检查另一个 deleteNode.
希望这对您有所帮助。
谢谢!!
我试图从链表中删除一个节点,如果它的值落在某个范围内(大于或等于低且小于或等于高)。此代码仅删除范围内找到的第一个值。
public void removeData(E low, E high) {
Node previousNode = root;
Node deleteNode = previousNode.getNext();
while (deleteNode != null) {
if (deleteNode.getValue().compareTo(low) >= 0 && deleteNode.getValue().compareTo(high) <= 0) {
previousNode.setNext(deleteNode.getNext());
}
previousNode = previousNode.getNext();
deleteNode = deleteNode.getNext();
}
}
在这段代码中你需要做的是:
public void removeData(E low, E high) {
Node previousNode = root;
Node deleteNode = previousNode.getNext();
while (deleteNode != null) {
if (deleteNode.getValue().compareTo(low) >= 0 && deleteNode.getValue().compareTo(high) <= 0) {
previousNode.setNext(deleteNode.getNext());
}else{
previousNode = previousNode.getNext();
}
deleteNode = deleteNode.getNext();
}
}
因为如果一个节点被删除,前一个节点不需要递增,只需要 deleteNode 就可以。并检查另一个 deleteNode.
希望这对您有所帮助。 谢谢!!