ВУЗ:
Составители:
Рубрика:
84
if (isEmpty()) {
head = new ListNode(newData, null);
} else {
ListNode curNode = head;
while (curNode.next != null) {
curNode = curNode.next;
}
ListNode temp = new ListNode(newData, null);
curNode.next = temp;
}
}
Цикл while можно заменить на цикл for c пустой инициализацией
public void addToTail(int newData) {
if (isEmpty()) {
head = new ListNode(newData, null);
} else {
ListNode curNode = head;
for (; curNode.next != null; curNode = curNode.next) ;
ListNode temp = new ListNode(newData, null);
curNode.next = temp;
}
}
Как видно, в последних двух строках ветки else можно не использовать
переменную temp. И конечный вариант добавления элемента в хвост списка
будет следующим:
public void addToTail(int newData) {
if (isEmpty()) {
head = new ListNode(newData, null);
} else {
ListNode curNode = head;
for (; curNode.next != null; curNode = curNode.next);
curNode.next = new ListNode(newData, null);
}
}
При решении задачи добавления в хвост автоматом «решилась» задача
просмотра всего списка. Мы его почти просмотрели, когда искали последний
элемент. Следует отметить, что во время просмотра списка он не должен
меняться, и, как следствие, не должна меняться голова списка. Поэтому надо
объявить переменную.
Если нам надо вывести все данные, которые находятся
в списке, псевдокод
алгоритма будет следующий:
Объявить переменную для просмотра списка (текущий узел)
Инициализировать текущий узел головой списка
Пока текущий элемент существует
НачалоЦикла
Вывести данное в текущем узле
Перейти на следующий элемент за текущим элементом.
ОкончаниеЦикла
Страницы
- « первая
- ‹ предыдущая
- …
- 82
- 83
- 84
- 85
- 86
- …
- следующая ›
- последняя »