а ак обратиться на втором создании, в вашем случае 4 элемента и добавить новый нод между 2 и 3 элементами получается между прошлым (первым) newObj и last; нам получается нужно у них поменять значение полей next и prev и тут fiest ужу получается не участвует, у нас же имя того нода не уникально как к нему обратиться, получается мы следующий элемент ведь с таким же именем создаем и как в этом случае к старому обращаться за который нужно новый элемент поставить ведь он с тем же именем
КОММЕНТ:
Нет, компилятор сам этого не понимает, конечно. Нам как раз и нужно придумать, что и где написать, чтобы во вновь создаваемом объекте сохранить ссылки на ранее созданный объект и следующий объект.
Самый первый объект во всей этой цепочке уже был создан заранее - ссылка на него сохранена в поле first.
Далее, также заранее, был создан второй объект - ссылка на него попала в поле last.
На начальном этапе first.next хранит в себе ссылку на объект из поля last, т.е. на тот объект, который идет следом.
А last.prev хранит ссылку на объект из поля first, т.е. на предшествующий себе объект.
Метод add должен создавать очередной объект типа Node и помещать его ПЕРЕД последним, т.е. перед объектом last.
Например, при добавлении третьего объекта (назовем его, например, newObj) нужно сделать так, чтобы:
- в first.next и last.prev передалась ссылка на него,
- в поле prev этого нового объекта попала ссылка на first,
- в поле next нового объекта попала ссылка на last.
При добавлении четвертого объекта:
- в newObj.next и last.prev передалась ссылка на этот четвертый объект,
- в его поле prev попала ссылка на newObj,
- а в поле next нового объекта снова попала ссылка на тот же last.
И т.д.
Сергей Ильин
35 уровень
Так, нужна помощь) вопрос создан на основе коммента
Обсуждается
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
AV
12 марта 2022, 05:05
Мой вариант решения.
P.S. Правильный вариант гораздо короче и красивее.
+1
KIRAРазработчик в prosv.ruExpert
11 марта 2022, 16:58
LinkedList
+1
Сергей Ильин президент
11 марта 2022, 17:21
тут ксожалению нет ответов на мои вопросы, не рассказывается внутренняя работа методов класса, в задании получается надо описать как оаботает add, а в лекции используется уже готовый метод
0
Сергей Ильин президент
11 марта 2022, 15:28
public void add(String value) {
int i = 0;
if(i < 1) {
Node node = new Node(value);
first.next = node;
last.prev = node;
i++;
}
else {
Node node = new Node(value);
// вот как мне тут после создания уже первого элемента обратиться к нему чтобы у него поле next перезаписать??
// новый же элемент будет между ним и last
}
}
public static class Node {
private Node prev;
private String value;
private Node next;
public Node(String data) {
value = data;
}
}
}
ВОТ мой код, я хоть в правильном направлении?)
0
Сергей Ильин президент
11 марта 2022, 15:34
и оцените насколько понятен вопрос)
0