# Pair Swap

Posted: 28 Sep, 2020
Difficulty: Moderate

## PROBLEM STATEMENT

#### For Example:

``````We have a linked list 1->2->3->4->5->6->7 and so on. You are supposed to swap pairs of a linked list like swap (1,2), (3,4), (5,6), and so on.
``````
##### Note:
``````1. You may not modify the data in the list’s nodes; only nodes themselves may be changed. Because imagine a case where a node contains many fields, so there will be too much unnecessary swap.

2. If a pair of a node does not exist, then leave the node as it is.
``````
##### Input format :
``````The input contains the elements of the singly linked list separated by a single space and terminated by -1. Hence, -1 would never be a list element.
``````
##### Output format :
``````For each input, print a single line containing the same number of integers as in the list, in swapped order.
``````
##### Note :
``````You do not need to print anything, it has already been taken care of just implement the given function.
``````
##### Constraints :
``````0 <= N <= 5 * 10 ^ 5
-10 ^ 9 <= DATA <= 10 ^ 9 and DATA != -1

Where ‘N’ is the length of the linked list and 'DATA' is data in each node.

Time limit: 1 sec.
`````` Approach 1

We traverse the linked list using recursion and consider two nodes at a time and swap their links and pass the next pair information to recursion.

• The base case will be if the linked list is empty or contains one node then simply return the head.
• Let’s say we have two elements of nodes for a particular pair.
``````		    'FIRST' = 'HEAD'
``	'REMAINING-NODE' = 'SECOND' -> 'NEXT'``
``		'NEW-HEAD' = 'SECOND'``
``	   'SECOND' -> 'NEXT' = 'FIRST'``