Pairwise swap adjacent nodes of a linked list

Given a linked list, pairwise swap its adjacent nodes. The swapping of data is not allowed, only links should be changed.

For example,

Input: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> NULL

Output: 2 -> 1 -> 4 -> 3 -> 6 -> 5 -> 8 -> 7 -> NULL

The idea is very simple. We traverse the linked list, consider two nodes at a time and swap their links. This looks simple enough but needs special attention while exchanging the links. This is demonstrated below in C/Java –

C

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

#include<stdio.h>

#include<stdlib.h>

// Data Structure to store a linked list node

structNode

{

intdata;

structNode*next;

};

// Helper function to insert new node in the beginning of the linked list