Мы знаем, что структура данных Double LinkedList имеет то преимущество, что вставляет узел за время O(1), если вы уже получили узел до или после местоположения, которое хотите вставить. (например, если у вас есть двойной связанный список: A-B-C-D, если вы уже получили узел C, то для вставки нового узла до или после узла C требуется всего O (1) времени).
Если вы вручную создаете двойной связанный список в Java/C++, это довольно легко понять, но недавно я заинтересовался библиотекой LinkedList в Java, которая представляет собой структуру данных двойного связанного списка, предлагаемую в java.util. Если я хочу использовать библиотеку LinkedList, предоставленную java, как я могу выполнить вставку или удаление O (1), как я упоминал в 1-м абзаце? Я провел некоторое исследование, вы можете создать ListIterator для LinkedList, который может перемещаться вперед и назад, а затем вставлять и удалять прежний или после node. Но все равно нужен траверс. Если у меня уже есть узел C и как я могу напрямую получить соответствующий итератор за время O (1)?