2015-04-23 2 views
0

Я пытаюсь удалить узел из связанного списка, если его значение попадает в определенный диапазон (больше или равно низкому и меньше или равен максимуму). Этот код удаляет только первое значение, находящееся в пределах диапазона.Удаление диапазона значений из связанного списка

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(); 
    } 
} 

ответ

0

В этом коде, что вам нужно сделать, это:

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.

Надеюсь, это может вам помочь. Спасибо!

Смежные вопросы