Как удалить последний элемент в стеке, на основе односвязного списка?
Метод должен возвращать значение и удалять его из коллекции
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;