Я создал метод удаления, который удаляет объект из отдельного списка.Как удалить указанный узел из связанного списка?
Пока метод удаляет первый узел и второй узел без проблем. При удалении третьего узла и далее метод удаляет все между указанным узлом и головным узлом. Мой вопрос в том, как я могу заставить мой метод удалить указанный узел и не все до него?
Я знаю, что мне нужно сохранить ссылку на предыдущий узел, чтобы назначить следующий узел указанным узлам следующего узла. Это закроет промежуток и удалит узел. Я понимаю логику, но не могу ее реализовать.
public class List_test{
public Node head;
public List(){
head = null;
}
public List(Node head_) {
this.head = head_;
Node ref = head;
}
public void remove(Node node) {
Node ref= head;
if (ref.equals(node)) {
head = head.next;
return;
}
while (ref != null) {
if (ref.equals(node)) {
head.next = node.next;
}
ref = ref.next;
}
}
public static void main(String[] args) {
new List_test();
}
Я понимаю, но как я могу ссылаться на предыдущий узел? – girthquake
У вас должна быть переменная, чтобы удерживать ее. Например, до начала цикла while, предыдущийNode = null, поскольку ref указывает на головку, и нет предыдущего узла. В цикле, когда вы делаете
'ref = ref.next', установите previousNode, чтобы указать, что у вас есть предыдущие узлы для каждого пройденного узла –