Программа Javascript для попарной замены элементов заданного связанного списка
Для заданного односвязного списка напишите функцию, которая попарно меняет местами элементы.
Input: 1->2->3->4->5->6->NULL Output: 2->1->4->3->6->5->NULL Input: 1->2->3->4->5->NULL Output: 2->1->4->3->5->NULL Input: 1->NULL Output: 1->NULL
Например, если связанный список 1->2->3->4->5, то функция должна изменить его на 2->1->4->3->5, а если связанный список, то функция должна изменить его на.
МЕТОД 1 (итеративный):
Начните с головного узла и пройдитесь по списку. При обходе обменяйте данные каждого узла с данными его следующего узла.
Ниже приведена реализация вышеуказанного подхода:
Выход:
Linked list before calling pairWiseSwap() 1 2 3 4 5 Linked list after calling pairWiseSwap() 2 1 4 3 5
Временная сложность: O(n), так как мы проходим по связанному списку размера N, используя цикл while.
Вспомогательное пространство: O(1), так как мы не используем дополнительное пространство.
МЕТОД 2 (рекурсивный):
Если в связанном списке 2 или более узлов, поменяйте местами первые два узла и рекурсивно вызовите остальную часть списка.
На изображении ниже показан пробный запуск описанного выше подхода:
Ниже приведена реализация вышеуказанного подхода:
Временная сложность: O(n), так как мы проходим по связанному списку размера N, используя рекурсию.
Вспомогательное пространство: O(1), так как мы не используем дополнительное пространство.
Представленное там решение меняет местами данные узлов. Если данные содержат много полей, будет много операций подкачки. См. это для реализации, которая изменяет ссылки, а не обменивает данные.
Пожалуйста, обратитесь к полной статье о элементах парного обмена в данном связанном списке для получения более подробной информации!