从链表中删除一系列值

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.

希望这对您有所帮助。 谢谢!!