Code360 powered by Coding Ninjas X Naukri.com. Code360 powered by Coding
Ninjas X Naukri.com

Problem of the day

You are given a singly linked list of integers.

Your task is to swap every two adjacent nodes, and return the head of the modified, linked list.

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.
```

```
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.
```

Detailed explanation

```
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.
```

```
11 21 13 14 15 -1
```

```
21 11 14 13 15 -1
```

```
Swap 11 with 21 then swap 13 with 14 and 15 has no pair so leave that node as it is.
```

```
-13 14 -21 18 -20 30 -1
```

```
14 -13 18 -21 30 -20 -1
```

```
Swap -13 with 14 then swap -21 with 18 and then swap -20 to with 30.
```