Ребята, поэтому я перехожу к нескольким моим методам в моем классе Linked List, и я получаю логическую ошибку при удалении узла из связанного списка. Я работал над методом removeFirst(), когда я также обнаружил ошибку в методе removeLast(). Проблема в том, что оба удаляют последний элемент в списке. не знаю почему, но вот мой код.Как удалить первый узел в связанном списке?
Удалить первый узел
public T removeFirst() throws EmptyCollectionException
{
// Checking to see if the List is empty or not
if (isEmpty())
throw new EmptyCollectionException("LinkedList");
Node <T> temp = contents;
T next = contents.getNext().getItem();
contents = new Node (next, contents);
count--;
return temp.getItem();
}
Удалить последний узел
public T removeLast() // fixed
{
// Checking to see if the List is empty or not
if (isEmpty())
throw new EmptyCollectionException("LinkedList");
// Node<T> temp = contents;
Node<T> current = contents;
Node<T> prev = null;
while (current.getNext() != null)
{
prev = current;
current = current.getNext();
}
prev.setNext(null);
count--;
return current.getItem();
}
Я огляделся вопросы уже отвечал, но я не могу найти ответ Я ищу.
Я знаю, что узел имеет по меньшей мере два значения
один для хранения данных, а другой держать ссылку на следующий узел
Вот что я думаю, что это происходит в первой. Но когда я вызываю методы один за другим, они оба освобождаются от последнего узла. Idk Я просмотрю свой код и при необходимости обновлю этот вопрос. Но можете ли вы, ребята, увидеть, где я ошибаюсь, и указать мне в правильном направлении. Спасибо.
Спасибо, что отлично сработал для removeFirst(). По какой-то причине я думал, что мне нужен новый узел, поэтому сначала нужно получить элемент во втором узле, а затем связать его с остальной частью списка. Ваш метод намного проще. И я думаю, что я понял, почему я снова возвращаю первый узел в removeLast(). xD – Raw415