Программа Javascript для попарной замены элементов заданного связанного списка

Опубликовано: 2 Сентября, 2022

Для заданного односвязного списка напишите функцию, которая попарно меняет местами элементы.

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), так как мы не используем дополнительное пространство.
Представленное там решение меняет местами данные узлов. Если данные содержат много полей, будет много операций подкачки. См. это для реализации, которая изменяет ссылки, а не обменивает данные.

Пожалуйста, обратитесь к полной статье о элементах парного обмена в данном связанном списке для получения более подробной информации!