Вы не можете удалить первый Node
с вашей текущей реализацией, потому что первый узел - this
, и вы не можете изменить его внутри класса Node
. Что вы можете сделать, так это немного изменить метод удаления и вернуть новый экземпляр вашего Node
класса.
public Node delete(Object data) {
Node node = this;
if (node.data.equals(data)) {
return node.next;
}
while (node.next != null) {
if (node.next.data.equals(data)) {
node.next = node.next.next;
return node;
}
node = node.next;
}
return null;
}
Так что, если вы хотите удалить первый узел, вам нужно будет поместить его в новую переменную или выполнить повторную проверку. Пример:
Node node = new Node(1);
node.add(2);
node.add(4);
node.add(3);
node.delete(3);
node = node.delete(1);
node.printList();