2.5Kпросмотров
14 сентября 2025 г.
📷 ФотоScore: 2.8K
LinkedList. Связанный список устроен весьма просто: каждый объект хранит ссылку на следующий кроме последнего: class Node( val value: Int, var next: Node? = null
) // всегда ссылается на первый элемент
val root = Node(1) // добавляем в список значения
root.next = Node(2)
root.next.next = Node(3)
root.next.next.next = Node(4) // у последнего next равен null
root.next.next.next.next // null Список при этом может быть динамический, так как достаточно хранить ссылку токо на первый элемент, до остальных можно добраться с помощью простого цикла: // root - ссылка на первый элемент
val node: Node? = root
// цикл для прохода по всем значениям списка
while (node != null) { // выводим значение элемента println(node.value) // идем к следующему node = node.next
} В итоге объекты могут храниться в любой части памяти так как в них буквально зашиты адреса на следующие значения в отличии от массивов, где нет подобных ссылок, а навигация происходит по индексам, что и требует последовательного хранения. P.S. Есть еще двусвязный список в котором помимо ссылки на следующее значение, есть еще ссылка на предыдущее. Всем хорошего кода!