Нашли ошибку?

Сортировка выбором для связанного списка

СложнаяРеализацияГлава 2

#сортировка выбором#связанные списки#удалениеid: ga-sort-linked-list

Отсортируйте односвязный список по возрастанию сортировкой выбором, переставляя узлы, а не значения. Напишите sort_nodes(head): функция возвращает новую голову. Новые узлы не создаются, поле value не меняется, узлы с равными значениями сохраняют исходный порядок.

Пример

head = Node(4, Node(1, Node(3, Node(1))))
head = sort_nodes(head)   # 1 → 1 → 3 → 4 (сначала та единица, что шла раньше)

Ограничения

Решение

class Node:
    """Узел односвязного списка."""

    def __init__(self, value: int, next: "Node | None" = None) -> None:
        self.value = value
        self.next = next


def sort_nodes(head: Node | None) -> Node | None:
    """Сортирует список выбором, переставляя узлы; возвращает новую голову."""
    # ваш код
    raise NotImplementedError

Можно решать и в своём редакторе: «Скопировать с тестами» и запустите python3 sort_linked_list.py — тесты те же, результат покажет ✓ / ✗ и итог.