🔍Как перевернуть двусвязный список в 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 для представления узла двусвязного списка. Затем, функция reverse_list принимает голову списка и переворачивает его, меняя ссылки на предыдущий и следующий узлы. Наконец, вызов reverse_list(head) переворачивает список и возвращает новую голову списка.

Детальный ответ

Как перевернуть двусвязный список 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, вы сможете перевернуть любой двусвязный список.

Видео по теме

Структуры данных в Python #2 Двусвязные списки

Двусвязный список | Динамические структуры данных #2

#10. Двусвязный список. Структура и основные операции | Структуры данных

Похожие статьи:

Упрощаем работу с файлами в Python: что такое файловая переменная в Python?

🐍 Как добавить питон в path Windows 7: пошаговая инструкция для начинающих

Как определить константу в Питоне? 🐍💡

🔍Как перевернуть двусвязный список в Python: легкий способ и примеры🐍

🔥 Как удалить все версии Python на Mac и освободить место 🚀

Как получить результат выполнения функции Python от операторов возврата данных

⚡️Как рассчитать евклидово расстояние в Питоне: простой метод