Первый элемент не имеет предыдущего узла, поэтому его указатель prev содержит значение nil. Аналогично последний элемент содержит значение nil в поле next. Такая структура называется двусвязным списком (Doubly Linked List).
Наличие дополнительного указателя позволяет эффективно выполнять операции, которые затруднены в односвязном списке.
Появляется возможность:
- перемещаться по списку как вперед, так и назад;
- быстро получать предыдущий элемент;
- упрощать некоторые операции удаления и вставки.
За счет хранения обратных ссылок многие алгоритмы становятся удобнее в реализации, но дополнительная функциональность достигается за счет увеличения объема памяти. Каждый узел теперь хранит не один указатель, а два, поэтому на хранение структуры требуется больше памяти по сравнению с односвязным списком.
Пример структуры узла двусвязного списка на языке C++: