🔍Как перевернуть двусвязный список в Python: легкий способ и примеры🐍
Такой код поможет перевернуть двусвязный список в Python:
class Node:
def __init__(self, data):
self.data = data
self.prev = None
self.next = None
def reverse_list(head):
current = head
prev_node = None
while current:
next_node = current.next
current.next = prev_node
current.prev = next_node
prev_node = current
current = next_node
return prev_node
# Пример использования
head = Node(1)
head.next = Node(2)
head.next.prev = head
head.next.next = Node(3)
head.next.next.prev = head.next
reversed_head = reverse_list(head)
В данном коде создается класс Node для представления узла двусвязного списка. Затем, функция
Детальный ответ
Как перевернуть двусвязный список python
Перевернуть двусвязный список в Python можно с помощью нескольких простых шагов. Давайте рассмотрим алгоритм и приведем пример кода.
Шаг 1: Объявление класса Node
Прежде чем переворачивать список, нужно определить класс Node, который будет представлять узел списка. Каждый узел должен содержать ссылки на предыдущий и следующий узлы, а также хранить какую-либо информацию.
class Node:
def __init__(self, data):
self.data = data
self.prev = None
self.next = None
Шаг 2: Переворот списка
Чтобы перевернуть двусвязный список, нужно обойти все его узлы и изменить ссылки на предыдущие и следующие узлы. В начале списка нужно указать, что последний узел станет новым первым, а первый узел станет новым последним. Ниже приведен пример кода:
def reverse_doubly_linked_list(head):
current = head
prev_node = None
while current:
next_node = current.next
current.next = prev_node
current.prev = next_node
prev_node = current
current = next_node
return prev_node
В этом примере мы обходим список, начиная с головного узла. Для каждого узла мы сохраняем ссылку на следующий узел и меняем ссылки текущего узла на предыдущий и следующий узлы. Затем мы переходим к следующему узлу и повторяем этот процесс, пока не обойдем весь список.
Шаг 3: Пример использования
Давайте рассмотрим пример использования функции reverse_doubly_linked_list:
# Создание списка
node1 = Node(1)
node2 = Node(2)
node3 = Node(3)
node1.next = node2
node2.prev = node1
node2.next = node3
node3.prev = node2
head = node1
# Переворот списка
new_head = reverse_doubly_linked_list(head)
# Вывод списка в обратном порядке
current = new_head
while current:
print(current.data)
current = current.next
В этом примере мы создаем простой двусвязный список с тремя узлами. Затем мы вызываем функцию reverse_doubly_linked_list и получаем новую голову списка. Далее мы обходим список, начиная с новой головы, и выводим данные каждого узла.
Заключение
Переворот двусвязного списка в Python несложен, если следовать приведенному алгоритму. Используя класс Node и функцию reverse_doubly_linked_list, вы сможете перевернуть любой двусвязный список.