Возможно, вам нужно подумать немного глубже о реализации связанных списков. Вы указываете, что отложенное удаление НЕ поможет в любом случае, потому что время для поиска - это все время, необходимое для выполнения удаления.
Подумайте, что нужно, чтобы фактически УДАЛИТЬ элемент из связанного списка.
примечание: это предполагает ЕДИНСТВЕННО связанный список (не двойной список)
1) Найдите элемент, который нужно удалить (потому что это ОДИН связанный список, вам всегда нужно искать, потому что вам нужен элемент PREV)
2) Держите указатели на элементы PREV и NEXT
3) Зафиксируйте элемент «PREV», чтобы он указывал на элемент «NEXT», изолируя элемент CURRENT.
3.5) в двойном связанном списке вы также должны позаботиться об элементе NEXT, указывающем обратно на элемент PREV.
4) Освободить память, связанную с элементом CURRENT
Теперь, каков процесс отложенного удаления? --- намного короче
1) Найдите элемент для удаления (вам может даже не потребоваться выполнить поиск, так как у вас уже есть указатель на объект, который вы хотите удалить?)
2) пометить пункт для удаления.
*) Дождитесь запуска потока «Сборка мусора» и фактически выполните оставшиеся шаги, когда система находится в состоянии «IDLE»
Бинарное дерево, реализованное в виде связанного списка, в котором каждый элемент имеет левое и правое - однако вы все равно выполняете те же шаги в поиске. Я полагаю, что поиск двоичного дерева более эффективен с O (Log (n)).
Однако удаление из них становится более сложным, потому что у вас есть больше указателей для работы (и «ВЛЕВО», и «ВПРАВО») - поэтому потребуется больше инструкций для исправления, особенно при удалении узла дерева, который имеет указатели на узлы как для левого, так и для правого - один из них нужно будет перевести в новый корень - однако, что если им обоим уже назначены левый и правый указатели? Куда идет исходный «левый / правый» узел? - Вы должны повторно сбалансировать дерево в этой точке. Таким образом, существует значительная экономия по марке для удаления с точки зрения пользователя и наличия "незанятого" сбора мусора, заботящегося о деталях памяти (поэтому пользователю не нужно ждать этого).