Как называется наличие у объекта ссылки на предыдущий и следующий объект
1️⃣ Как кратко ответить
Наличие у объекта ссылки на предыдущий и следующий объект называется "двусвязный список" (doubly linked list).
2️⃣ Подробное объяснение темы
Двусвязный список — это структура данных, в которой каждый элемент (узел) содержит ссылки на два других элемента: предыдущий и следующий. Это позволяет легко перемещаться по списку в обоих направлениях, что делает двусвязные списки более гибкими по сравнению с односвязными списками, где каждый элемент ссылается только на следующий.
Зачем это нужно
Двусвязные списки полезны, когда требуется частое перемещение в обоих направлениях по списку или когда необходимо легко удалять элементы из середины списка. Они часто используются в реализации структур данных, таких как деки (двусторонние очереди) и списки истории в браузерах.
Как это работает
Каждый узел в двусвязном списке содержит три компонента:
- Данные — информация, которую хранит узел.
- Ссылка на предыдущий узел — указатель на предыдущий элемент в списке.
- Ссылка на следующий узел — указатель на следующий элемент в списке.
Пример кода
// Класс для представления узла двусвязного списка
class Node {
int data; // Данные, хранимые в узле
Node prev; // Ссылка на предыдущий узел
Node next; // Ссылка на следующий узел
// Конструктор для создания нового узла
Node(int data) {
this.data = data; // Инициализация данных
this.prev = null; // Изначально предыдущий узел отсутствует
this.next = null; // Изначально следующий узел отсутствует
}
}
// Класс для представления двусвязного списка
class DoublyLinkedList {
Node head; // Ссылка на первый узел списка
// Метод для добавления нового узла в конец списка
void append(int data) {
Node newNode = new Node(data); // Создание нового узла
if (head == null) { // Если список пуст
head = newNode; // Новый узел становится первым элементом
return;
}
Node last = head; // Начинаем с первого узла
while (last.next != null) { // Ищем последний узел
last = last.next; // Переход к следующему узлу
}
last.next = newNode; // Устанавливаем новый узел как следующий для последнего
newNode.prev = last; // Устанавливаем предыдущий узел для нового
}
// Метод для печати списка в прямом порядке
void printList() {
Node current = head; // Начинаем с первого узла
while (current != null) { // Пока не достигнем конца списка
System.out.print(current.data + " "); // Печатаем данные текущего узла
current = current.next; // Переход к следующему узлу
}
}
}
// Пример использования двусвязного списка
public class Main {
public static void main(String[] args) {
DoublyLinkedList dll = new DoublyLinkedList(); // Создание нового двусвязного списка
dll.append(10); // Добавление элемента со значением 10
dll.append(20); // Добавление элемента со значением 20
dll.append(30); // Добавление элемента со значением 30
dll.printList(); // Печать списка: 10 20 30
}
}
В этом примере мы создали класс Node для представления узла двусвязного списка и класс DoublyLinkedList для управления списком. Метод append добавляет новый узел в конец списка, а метод printList выводит все элементы списка в прямом порядке.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться