Задать вопрос

Как удалить последний элемент в стеке, на основе односвязного списка?

Метод должен возвращать значение и удалять его из коллекции

public T deleteLast() throws NoSuchElementException {
if (head == null) {
throw new NoSuchElementException("Список пуст");
}

Node ref = head;
for (int i = 0; i < size; i++) {
ref = ref.next;
}
size--;
T temp = ref.value;
ref.next = null;
return temp;
}

Есть тест:

@Test
public void whenPushPollThenPushPoll() {
SimpleStack stack = new SimpleStack<>();
stack.push(1);
stack.pop();
stack.push(2);
assertThat(stack.pop(), is(2));
}

Тест не работает так как не правильно реализован метод deleteLast(), вероятно не правильно удаляю последнюю node (я это делаю с помощью ref.next = null;
  • Вопрос задан
  • 816 просмотров
Подписаться 1 Простой Комментировать
Ответ пользователя Тимур Покровский К ответам на вопрос (2)
Может так?
for (int i = 0; i < size - 1; i++) {...}
Ответ написан