Рассмотрим следующие узлы, одинарные и двойные.
class SingleLinkedNode {
E данные;
SingleLinkedNode next;
}
class DoubleLinkedNode {
E данные;
DoubleLinkedNode prev;
DoubleLinkedNode next;
}
Если мы хотим удалить из DoubleLinkedList (при условии, что мы уже НАШЛИ узел, который сильно отличается), что нам нужно сделать?
- Сделать узел перед удаленным
одна точка после другой.
- Сделать узел после удаленной на одну точку предыдущей.
Если мы хотим удалить из SingleLinkedList (при условии, что мы уже НАШЛИ узел, который сильно отличается), что нам нужно сделать?
- Сделать узел перед удаленным на одну точку, а после на следующий.
Можно подумать, это означает, что в одном связанном списке это даже быстрее, чем в двойном.
Но как мы делаем удаление узла, если у нас нет ссылки на предыдущий? У нас есть только ссылка на следующее. Разве нам не пришлось бы делать совсем другой поиск в списке, чтобы найти предысторию? : -О