Односвязный список против двусвязного списка
Связанный список - это линейная структура данных, которая используется для хранения набора данных. Связанный список выделяет память своим элементам отдельно в собственном блоке памяти, и общая структура получается путем связывания этих элементов в виде звеньев в цепочке. Односвязный список состоит из последовательности узлов, и каждый узел имеет ссылку на следующий узел в последовательности. Двусвязный список содержит последовательность узлов, в которой каждый узел содержит ссылку на следующий узел, а также на предыдущий узел.
Односвязный список
Каждый элемент в односвязном списке имеет два поля, как показано на рисунке 1. Поле данных содержит фактические сохраненные данные, а следующее поле содержит ссылку на следующий элемент в цепочке. Первый элемент связанного списка сохраняется как заголовок связанного списка.
На рисунке 2 изображен односвязный список из трех элементов. Каждый элемент хранит свои данные, а все элементы, кроме последнего, хранят ссылку на следующий элемент. Последний элемент содержит нулевое значение в своем следующем поле. Доступ к любому элементу в списке можно получить, начав с заголовка и следуя за следующим указателем, пока не встретите требуемый элемент.
Двусвязный список
Каждый элемент в двусвязном списке имеет три поля, как показано на рисунке 3. Подобно односвязному списку, поле данных содержит фактические сохраненные данные, а следующее поле содержит ссылку на следующий элемент в цепочке. Кроме того, предыдущее поле содержит ссылку на предыдущий элемент в цепочке. Первый элемент связанного списка сохраняется как заголовок связанного списка.
На рисунке 4 изображен двусвязный список из трех элементов. Все промежуточные элементы хранят ссылки на первый и предыдущие элементы. Последний элемент в списке содержит нулевое значение в своем следующем поле, а первый элемент в списке содержит нулевое значение в своем предыдущем поле. По двусвязному списку можно переходить вперед, следуя следующим ссылкам в каждом элементе, и аналогичным образом можно перемещаться назад, используя предыдущие ссылки в каждом элементе.
В чем разница между односвязным списком и двусвязным списком?
Каждый элемент в односвязном списке содержит ссылку на следующий элемент в списке, а каждый элемент в двусвязном списке содержит ссылки на следующий элемент, а также на предыдущий элемент в списке. Двусвязные списки требуют больше места для каждого элемента в списке, а элементарные операции, такие как вставка и удаление, более сложны, поскольку им приходится иметь дело с двумя ссылками. Но списки с двойными ссылками упрощают манипуляции, поскольку позволяют перемещаться по списку в прямом и обратном направлениях.