LinkedList
имеет 2 ссылки на первый и последний узел в списке.
С LinkedList
исходный код :
/**
* Pointer to first node.
* Invariant: (first == null && last == null) ||
* (first.prev == null && first.item != null)
*/
transient Node<E> first;
/**
* Pointer to last node.
* Invariant: (first == null && last == null) ||
* (last.next == null && last.item != null)
*/
transient Node<E> last;
Как вывидим, что первый узел имеет свой "prev" член, установленный в нуль, и последний узел имеет "следующий" член, установленный в нульУстановка first.prev = last и last.next = prev сделает круговой список, НО (осторожно здесь) вам придется переопределить большинство операций вставки, связывания и удаления в связанных списках, чтобы учесть это изменение. Возможно, вам также понадобится написать код для итератора. Это не тривиально, потому что вам нужно отслеживать, где остановиться при итерации списка, или вы можете попасть в бесконечный цикл. Надеюсь, я дал понять, и ответ поможет. Привет