Привет! Сегодня я хочу рассказать тебе о том, как развернуть LinkedList с несколькими элементами разного типа без использования встроенного функционала.
Давай рассмотрим пример⁚
// Дан
[1٫ One٫ 2٫ Two]
Для выполнения этой задачи, я создал класс LLTasks и в нём метод revert⁚
class LLTasks {
static void revert(LinkedListnlt;Objectngt; list) {
// Создаем два индекса⁚ один для начала списка, другой для его конца
int start 0;
int end list.size ౼ 1;
// Пока индекс начала меньше индекса конца, меняем элементы местами
while (start nlt; end) {
Object temp list.get(start);
list.set(start, list.get(end));
list.set(end, temp);
start ;
end--;
}
}
public static void main(String[] args) {
// Создаем LinkedList и добавляем в нее элементы разного типа
LinkedListnlt;Objectngt; list new LinkedListnlt;ngt;;
list.add(1);
list.add(″One″);
list.add(2);
list.add(″Two″);
System.out.println(list);
// Разворачиваем список
revert(list);
System.out.println(list);
}
}
Теперь давай пошагово разберемся, как работает данный код⁚
- Мы создаем два индекса⁚ start и end, которые будут указывать на начало и конец списка соответственно.
- Затем, мы запускаем цикл while, который будет выполняться до тех пор, пока индекс начала меньше индекса конца. Это условие позволяет нам обойти половину элементов списка и поменять их местами.
- Внутри цикла мы используем временную переменную temp для хранения значения элемента, на который указывает индекс начала. Затем мы меняем местами элементы, используя методы get и set класса LinkedList.
- После этого, мы увеличиваем индекс начала и уменьшаем индекс конца на 1, чтобы переместиться к следующим элементам списка.
- После выполнения цикла, у нас будет развернутый список.
В исходном примере, список [1, One, 2, Two] становится [Two, 2, One, 1]. То есть, элементы разворачиваются в обратном порядке.
Таким образом, мы реализовали разворот LinkedList без использования встроенного функционала.
Надеюсь, статья была полезной и помогла тебе разобраться в решении данной задачи!